Linux tutorial

45
Linux tutorial 2013. 09. 05.

Transcript of Linux tutorial

Page 1: Linux tutorial

Linux tutorial2013. 09. 05.

Page 2: Linux tutorial

오늘다룰이야기• putty를통한 windows 환경에서 terminal 접속

• Linux terminal 사용시필요한명령들

• Terminal 환경에서파일을다뤄보기

Lin

ux

Term

inal

1

Page 3: Linux tutorial

들어가기에앞서• Linux terminal의장점은?

공짜다!

쉽게설치되는시스템/프로그래밍관련패키지들

알면알수록일처리의속도가빨라짐

효율적인원격작업(terminal 이용)

• 그렇다면단점은?

Windows의장점을가지고있지못함(단언컨데, Windows는…)

Lin

ux

Term

inal

2

Page 4: Linux tutorial

iPutty - A SSH Client for Windows

• https://bitbucket.org/daybreaker/iputty/wiki/Home

Lin

ux

Term

inal

3

Page 5: Linux tutorial

Putty 실행

Lin

ux

Term

inal

4

Page 6: Linux tutorial

계정정보입력

Lin

ux

Term

inal

5

Page 7: Linux tutorial

실습자료다운받기• 다운받는방법

$ wget http://libe.lavida.us/linux.zip

Saving to: ‘linux.zip’

100%[=====================================>] 6,156 --.-K/s in 0s

2013-09-05 21:11:10 (81.0 MB/s) - ‘linux.zip’ saved [6156/6156]

Lin

ux

Term

inal

6

Page 8: Linux tutorial

압축풀고이동하기$ unzip linux.zip

$ pwd

/home/hhjeong/

$ cd linux_seminar

$ ls –l

$ pwd

/home/hhjeong/linux_seminar Lin

ux

Term

inal

7

linux_ 치고 tab을누르면?

Page 9: Linux tutorial

txt 파일을만들어봅시다!$ cat > first_file.txt

이것은제가처음만든파일입니다!

내용은아무렇게입력을해보세요~

그리고마지막에는 ctrl+d를눌러주세요.

ctrl누른상태에서 d를눌러주시면됩니다.

Lin

ux

Term

inal

8

Page 10: Linux tutorial

파일내용보기$ cat first_file.txt

이것은제가처음만든파일입니다!

내용은아무렇게입력을해보세요~

그리고마지막에는 ctrl+d를눌러주세요.

ctrl누른상태에서 d를눌러주시면됩니다.

$ head -2 first_file.txt

이것은 제가 처음 만든 파일입니다!

내용은 아무렇게 입력을 해보세요~

$ tail -1 first_file.txt

ctrl누른 상태에서 d를 눌러주시면 됩니다.

Lin

ux

Term

inal

9

Page 11: Linux tutorial

덧붙이기$ cat >> first_file.txt

이어서 입력해봐요

$ cat first_file.txt

이것은 제가 처음 만든 파일입니다!

내용은 아무렇게 입력을 해보세요~

그리고 마지막에는 ctrl+d 를 눌러주세요.

ctrl누른 상태에서 d를 눌러주시면 됩니다.

이어서 입력해봐요

Lin

ux

Term

inal

10

Page 12: Linux tutorial

여기서잠깐Q) 그럼문서편집할때는어떻게하나요?

A) 일반적으로 vi/emacs등의에디터를사용합니다.

개인적으로는 vi를추천하고, vim을깔아사용하는것이좋습니다.

Lin

ux

Term

inal

11http://unix.stackexchange.com/

Page 13: Linux tutorial

여기서잠깐Q) Vi를공부하려고합니다. 어떻게하는게좋을까요?

A) 다음을이용하시면좋습니다. http://likelion.net/class01/likelion01_vim_seminar.pdf

http://choiyongchol.com/vim/go

Lin

ux

Term

inal

12

Page 14: Linux tutorial

여기서잠깐(계속)• 읽기귀찮은사람들을위한간단요약

vim 파일이름

파일이있으면편집, 없을경우새로운파일생성

i키를누르면 VS와메모장처럼편집가능(입력모드)

Esc를누르면다시복귀편집불가(일반모드)

:를누르면저장, 다른문서편집등이가능(명령모드)

:q(종료)

:w(저장)

:e 다른파일(다른파일편집)

:e . (현재디렉토리탐색)

이말고도정말다양한기능이많습니다!

vim 쓴지 9년짼데아직도모르는기능이많아요.

물론쓰려면당연히공부를해야…

Lin

ux

Term

inal

13

Page 15: Linux tutorial

그렇다면 cat는쓸모가없나요?• 때때로쓸모가있습니다.

윈도의텍스트문서를사용하는 terminal을이용해저장하기

1. putty 선택

2. $ cat > filename

3. 윈도내에서텍스트복사

4. putty 선택후에마우스우클릭

5. ctrl+d

만약, 안될경우에는 enter를친다음 ctrl+d

Lin

ux

Term

inal

14

Page 16: Linux tutorial

원래위치로돌아가기$ cd .. 혹은 $ cd ~

$ pwd

/home/hhjeong/

Lin

ux

Term

inal

15

Page 17: Linux tutorial

파일지우기$ rm linux.zip

$ rm linux_seminar

rm: `linux_seminar/'를 지울 수 없음: 디렉터리입니다

$ rm linux_seminar –rf

Lin

ux

Term

inal

16

Page 18: Linux tutorial

다시한번더!• 다시실습자료를다운받아봅시다!

• 다음의파일을다운받아봅시다. http://likelion.net/class01/likelion01_vim_seminar.pdf

저장될디렉토리의위치 : /home/username/linux_seminar

저장되는파일의이름 : vim.pdf

힌트 : $ wget --help | more

Lin

ux

Term

inal

17

Page 19: Linux tutorial

앞의문제의정답$ wget --help

Download:

-t, --tries=NUMBER set number of retries to NUMBER (0 unlimits).

--retry-connrefused retry even if connection is refused.

-O, --output-document=FILE write documents to FILE.

-nc, --no-clobber skip downloads that would download to

$ wget http://likelion.net/class01/likelion01_vim_seminar.pdf -O vim.pdf

Lin

ux

Term

inal

18

Page 20: Linux tutorial

Linux의파일구조

Lin

ux

Term

inal

19http://www.ee.surrey.ac.uk/Teaching/Unix/unixintro.html

/home/its/ug1/ee51vn/report.doc

Page 21: Linux tutorial

알면좋은 Linux 특징• file/directory대소문자구분(case-sensitive)

• 프로그램실행방법 ./path/to/your/excutable/file

/usr/bin에있을경우 file명그대로

예시 : python hello.py

Background 실행

command-line &

접속을종료 해도해당 process는살아남음

Lin

ux

Term

inal

20

Page 22: Linux tutorial

기본명령(이것만해도해커처럼보임!)

Lin

ux

Term

inal

21

명령 용도 예시

ls 현위치의 file과 directory listing$ ls -a$ ls -al$ ls -alh

mkdir directory 만들기 $ mkdir new_folder

cd directory 특정 directory로이동$ cd other_folder$ cd /home/hhjeong/Workspace$ cd ~/Workspace

cd 혹은 cd ~ change to home-directory

cd .. Parent directory로이동

pwd 현위치표시

Page 23: Linux tutorial

기본명령(계속)

Lin

ux

Term

inal

22

명령 용도 예시

cp src dest 파일을복사하기cp *.txt /etc/hello/

cp a.txt b.txtcp * /home/world/ -R

mv src dest 파일을이동시키거나, 이름변경mv hello.txt world.txt

mv * ~/world/mv * ../dest/ -R

rm file 파일삭제 rm a.out

rmdir directory 디렉토리삭제(빈디렉토리만가능) rmdir /home/username/foo/

wc file 파일의단어수/문자수/줄수세기

wc a.txtwc –l a.txtwc –c a.txtwc –w a.txt

Page 24: Linux tutorial

응용하기• 패키지설치하기

• 압축풀기

• 프로세스죽이기

• 리다이렉션

• 파일검색하기

• 문자열검색하기

• 파일을입맛대로수정하기

• bash에서 for loop

• 파일나누고합치기

Lin

ux

Term

inal

23

Page 25: Linux tutorial

패키지설치하기

• In CentOS

$ yum install 패키지명

• In Debian(or Ubuntu)$ apt-get install 패키지명

Lin

ux

Term

inal

24

Page 26: Linux tutorial

패키지이름을모른다면?

• Google it!

검색키워드 “CentOS패키지명”

검색키워드 “Ubuntu 패키지명“

•버전을같이넣어주면검색의완성! 보다정확한결과!

Lin

ux

Term

inal

25

Page 27: Linux tutorial

압축풀기• *.tar.gz$ tar xvzf filename

• *.zip$ unzip filename

$ unzip filename –d /some/path/you/want

Lin

ux

Term

inal

26

Page 28: Linux tutorial

특정프로세스찾아죽이기$ ps a | grep python

8177 pts/0 T 0:00 python runner.py 10 result_0904_10.txt

10102 pts/0 T 0:00 python runner.py 10 result_0904_10.txt

11182 pts/3 T 0:00 python runner.py 10 result_1445.txt

12560 pts/3 T 0:00 python runner.py 10 result_1445.txt

$ kill -9 8177

$ ps aux | grep python

Lin

ux

Term

inal

27

Page 29: Linux tutorial

리다이렉션(redirection)$ g++ a_plus_b.cc -O2 -o a_plus_b

$ ./a_plus_b < a_plus_b.in

5

2+3=5

$ ./a_plus_b < a_plus_b.in > a_plus_b.out

2+3=5

$ cat a_plus_b.out

5

$ ./a_plus_b < a_plus_b.in 2> a_plus_b.err

5 Lin

ux

Term

inal

28

Page 30: Linux tutorial

파일위치검색하기$ find . -name “*.txt”

$ find / -name “[cb]ar???_*.avi”

Lin

ux

Term

inal

29

Page 31: Linux tutorial

문제• /usr/bin/ 폴더안의 py라는접두어(prefix)를가지는모든파일들을찾아보시오

Lin

ux

Term

inal

30

Page 32: Linux tutorial

파일내에서문자열검색$ grep word filename

$ grep word *.txt

$ grep word *.txt –r

$ grep -e “V66 “ interaction.txt > V66.txt

Pattern안에 tab 입력시엔 ctrl+v 다음 tab

Lin

ux

Term

inal

31

Page 33: Linux tutorial

awk를이용,특정열뽑기$ awk ‘{print $1, $2}’ tcga.txt

$ awk ‘{print $1}’ tcga.txt | head -10

$ awk ‘{print $1}’ tcga.txt > tcga_id.txt

Lin

ux

Term

inal

32

Page 34: Linux tutorial

특정열의개수를가진행뽑기$ awk '{ if(NF==4) print }' interactions.txt

$ awk '{ if(NF==4) print }' interactions.txt > interaction2.txt

$ awk '{ if(NF==4) print }' interactions.txt > interaction2.txt

$ awk '{ if(NF==5) print }' interactions.txt >> interaction2.txt

Lin

ux

Term

inal

33

Page 35: Linux tutorial

파일정렬하기$ sort -r -k 4 interaction2.txt

$ sort -r -k 4 -g interaction2.txt > sorted_interaction2.txt

Lin

ux

Term

inal

34

Page 36: Linux tutorial

문제• interaction.txt 의구조

SNP1, SNP2, …, 측정값1, 측정값2

SNP수가 2개혹은 3개존재

• SNP 수가 2개인행을 int2.txt에저장, SNP 수가 3개인행을int3.txt에저장

단, 측정값 2는제외하고저장

• 각파일을측정값의내림차순정렬

• 두파일을합쳐서 int_all.txt 파일생성

Lin

ux

Term

inal

35

Page 37: Linux tutorial

for loop 작성하기$ vim for.sh

#!/bin/bash

for num in 1 2 3 4 5 6 7

do

echo $num

done

Lin

ux

Term

inal

36

Page 38: Linux tutorial

for loop 작성하기$ ./for.sh

-bash: ./for.sh: 허가 거부

$ bash for.sh

1

2

3

4

5

6

7 Lin

ux

Term

inal

37

Page 39: Linux tutorial

for loop 작성하기$ chmod 700 for.sh

$ ./for.sh

1

2

3

4

5

6

7

Lin

ux

Term

inal

38

Page 40: Linux tutorial

for loop 작성하기for((i=1;i<=20;++i))

do

./a.out < input.$i > output.$i

cat output.$i

done

Lin

ux

Term

inal

39

Page 41: Linux tutorial

for loop 작성하기• 특정 filename을이용한 for loop

for filename in *.txt

do

rm $filename

done

Lin

ux

Term

inal

40

Page 42: Linux tutorial

for loop 작성하기• Command line에서즉시작성$ for i in 1 2 3 4; do command; done

Lin

ux

Term

inal

41

Page 43: Linux tutorial

문제• linux_seminar폴더의모든 *.txt파일

맨첫줄을출력

출력결과는 header.txt에저장

Lin

ux

Term

inal

42

Page 44: Linux tutorial

Linux terminal을더잘쓰고싶다면?• 다음의세파일을설정해보자!

~/.vimrc

https://github.com/skwp/dotfiles/blob/master/vimrc

~/.screenrc

http://forcecore.tistory.com/604

• 다음사이트도참고해보자! http://theyearlyprophet.com/love-your-terminal.html

Lin

ux

Term

inal

43

Page 45: Linux tutorial

참고자료• http://www.ee.surrey.ac.uk/Teaching/Unix/

• http://www.cyberciti.biz/faq/bash-loop-over-file/

Lin

ux

Term

inal

44