Linux tutorial
-
Upload
hyun-hwan-jeong -
Category
Software
-
view
233 -
download
3
Transcript of Linux tutorial
Linux tutorial2013. 09. 05.
오늘다룰이야기• putty를통한 windows 환경에서 terminal 접속
• Linux terminal 사용시필요한명령들
• Terminal 환경에서파일을다뤄보기
Lin
ux
Term
inal
1
들어가기에앞서• Linux terminal의장점은?
공짜다!
쉽게설치되는시스템/프로그래밍관련패키지들
알면알수록일처리의속도가빨라짐
효율적인원격작업(terminal 이용)
• 그렇다면단점은?
Windows의장점을가지고있지못함(단언컨데, Windows는…)
Lin
ux
Term
inal
2
iPutty - A SSH Client for Windows
• https://bitbucket.org/daybreaker/iputty/wiki/Home
Lin
ux
Term
inal
3
Putty 실행
Lin
ux
Term
inal
4
계정정보입력
Lin
ux
Term
inal
5
실습자료다운받기• 다운받는방법
$ 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
압축풀고이동하기$ unzip linux.zip
…
$ pwd
/home/hhjeong/
$ cd linux_seminar
$ ls –l
…
$ pwd
/home/hhjeong/linux_seminar Lin
ux
Term
inal
7
linux_ 치고 tab을누르면?
txt 파일을만들어봅시다!$ cat > first_file.txt
이것은제가처음만든파일입니다!
내용은아무렇게입력을해보세요~
그리고마지막에는 ctrl+d를눌러주세요.
ctrl누른상태에서 d를눌러주시면됩니다.
Lin
ux
Term
inal
8
파일내용보기$ 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
덧붙이기$ cat >> first_file.txt
이어서 입력해봐요
$ cat first_file.txt
이것은 제가 처음 만든 파일입니다!
내용은 아무렇게 입력을 해보세요~
그리고 마지막에는 ctrl+d 를 눌러주세요.
ctrl누른 상태에서 d를 눌러주시면 됩니다.
이어서 입력해봐요
Lin
ux
Term
inal
10
여기서잠깐Q) 그럼문서편집할때는어떻게하나요?
A) 일반적으로 vi/emacs등의에디터를사용합니다.
개인적으로는 vi를추천하고, vim을깔아사용하는것이좋습니다.
Lin
ux
Term
inal
11http://unix.stackexchange.com/
여기서잠깐Q) Vi를공부하려고합니다. 어떻게하는게좋을까요?
A) 다음을이용하시면좋습니다. http://likelion.net/class01/likelion01_vim_seminar.pdf
http://choiyongchol.com/vim/go
Lin
ux
Term
inal
12
여기서잠깐(계속)• 읽기귀찮은사람들을위한간단요약
vim 파일이름
파일이있으면편집, 없을경우새로운파일생성
i키를누르면 VS와메모장처럼편집가능(입력모드)
Esc를누르면다시복귀편집불가(일반모드)
:를누르면저장, 다른문서편집등이가능(명령모드)
:q(종료)
:w(저장)
:e 다른파일(다른파일편집)
:e . (현재디렉토리탐색)
이말고도정말다양한기능이많습니다!
vim 쓴지 9년짼데아직도모르는기능이많아요.
물론쓰려면당연히공부를해야…
Lin
ux
Term
inal
13
그렇다면 cat는쓸모가없나요?• 때때로쓸모가있습니다.
윈도의텍스트문서를사용하는 terminal을이용해저장하기
1. putty 선택
2. $ cat > filename
3. 윈도내에서텍스트복사
4. putty 선택후에마우스우클릭
5. ctrl+d
만약, 안될경우에는 enter를친다음 ctrl+d
Lin
ux
Term
inal
14
원래위치로돌아가기$ cd .. 혹은 $ cd ~
$ pwd
/home/hhjeong/
Lin
ux
Term
inal
15
파일지우기$ rm linux.zip
$ rm linux_seminar
rm: `linux_seminar/'를 지울 수 없음: 디렉터리입니다
$ rm linux_seminar –rf
Lin
ux
Term
inal
16
다시한번더!• 다시실습자료를다운받아봅시다!
• 다음의파일을다운받아봅시다. http://likelion.net/class01/likelion01_vim_seminar.pdf
저장될디렉토리의위치 : /home/username/linux_seminar
저장되는파일의이름 : vim.pdf
힌트 : $ wget --help | more
Lin
ux
Term
inal
17
앞의문제의정답$ 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
Linux의파일구조
Lin
ux
Term
inal
19http://www.ee.surrey.ac.uk/Teaching/Unix/unixintro.html
/home/its/ug1/ee51vn/report.doc
알면좋은 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
기본명령(이것만해도해커처럼보임!)
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 현위치표시
기본명령(계속)
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
응용하기• 패키지설치하기
• 압축풀기
• 프로세스죽이기
• 리다이렉션
• 파일검색하기
• 문자열검색하기
• 파일을입맛대로수정하기
• bash에서 for loop
• 파일나누고합치기
Lin
ux
Term
inal
23
패키지설치하기
• In CentOS
$ yum install 패키지명
• In Debian(or Ubuntu)$ apt-get install 패키지명
Lin
ux
Term
inal
24
패키지이름을모른다면?
• Google it!
검색키워드 “CentOS패키지명”
검색키워드 “Ubuntu 패키지명“
•버전을같이넣어주면검색의완성! 보다정확한결과!
Lin
ux
Term
inal
25
압축풀기• *.tar.gz$ tar xvzf filename
• *.zip$ unzip filename
$ unzip filename –d /some/path/you/want
Lin
ux
Term
inal
26
특정프로세스찾아죽이기$ 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
리다이렉션(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
파일위치검색하기$ find . -name “*.txt”
$ find / -name “[cb]ar???_*.avi”
Lin
ux
Term
inal
29
문제• /usr/bin/ 폴더안의 py라는접두어(prefix)를가지는모든파일들을찾아보시오
Lin
ux
Term
inal
30
파일내에서문자열검색$ 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
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
특정열의개수를가진행뽑기$ 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
파일정렬하기$ sort -r -k 4 interaction2.txt
$ sort -r -k 4 -g interaction2.txt > sorted_interaction2.txt
Lin
ux
Term
inal
34
문제• 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
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
for loop 작성하기$ ./for.sh
-bash: ./for.sh: 허가 거부
$ bash for.sh
1
2
3
4
5
6
7 Lin
ux
Term
inal
37
for loop 작성하기$ chmod 700 for.sh
$ ./for.sh
1
2
3
4
5
6
7
Lin
ux
Term
inal
38
for loop 작성하기for((i=1;i<=20;++i))
do
./a.out < input.$i > output.$i
cat output.$i
done
Lin
ux
Term
inal
39
for loop 작성하기• 특정 filename을이용한 for loop
for filename in *.txt
do
rm $filename
done
Lin
ux
Term
inal
40
for loop 작성하기• Command line에서즉시작성$ for i in 1 2 3 4; do command; done
Lin
ux
Term
inal
41
문제• linux_seminar폴더의모든 *.txt파일
맨첫줄을출력
출력결과는 header.txt에저장
Lin
ux
Term
inal
42
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
참고자료• http://www.ee.surrey.ac.uk/Teaching/Unix/
• http://www.cyberciti.biz/faq/bash-loop-over-file/
Lin
ux
Term
inal
44