Download presentation
Presentation is loading. Please wait.
Published by하선 목 Modified 8년 전
1
제 5 장 유틸리티 창병모 2012.09 1
2
5.1 파일 관련 유틸리티 2
3
필터링 : grep 명령어 $ grep 패턴 파일 * 대상 파일들을 읽어서, 해당 패턴을 검색하고, 패턴을 포함하는 줄을 출력 $ grep with you.txt Until you come and sit awhile with me There is no life - no life without its hunger; But when you come and I am filled with wonder, $grep -w with you.txt Until you come and sit awhile with me But when you come and I am filled with wonder, $grep -n with you.txt 4:Until you come and sit awhile with me 15:There is no life - no life without its hunger; 17:But when you come and I am filled with wonder, 3
4
grep 명령어 $grep -i when you.txt When I am down and, oh my soul, so weary When troubles come and my heart burdened be I am strong, when I am on your shoulders But when you come and I am filled with wonder, $grep -v raise you.txt When I am down and, oh my soul, so weary When troubles come and my heart burdened be Then, I am still and wait here in the silence Until you come and sit awhile with me I am strong, when I am on your shoulders There is no life - no life without its hunger; Each restless heart beats so imperfectly; But when you come and I am filled with wonder, Sometimes, I think I glimpse eternity 4
5
정규표현식 (regular expression) 정규표현식을 이용한 패턴 기술 . : 임의의 한 문자 * : 0 개 이상 예 ) a*b 는 b, ab, aab, aaab,... [ ] : [ 과 ] 사이의 문자 중 하나 [^...] : [^ 과 ] 사이의 문자를 제외한 나머지 문자 중 하나 ^, $ : 각각 줄의 시작과 끝을 의미한다. $ grep -w 'st.*' you.txt Then, I am still and wait here in the silence You raise me up, so I can stand on mountains You raise me up, to walk on stormy seas I am strong, when I am on your shoulders $ grep -w 'w.*t' you.txt Then, I am still and wait here in the silence There is no life - no life without its hunger; 5
6
정렬 : sort 명령어 sort 명령어 텍스트 파일을 정렬 필드를 기준으로 줄 단위로 오름차순 정렬 -r 옵션을 사용하여 내림차순으로 정렬 정렬 필드 지정 형식 : + 시작필드 - 종료필드 $ sort [- 옵션 ] 파일 * 6
7
정렬 예 1 $ sort you.txt But when you come and I am filled with wonder, Each restless heart beats so imperfectly; I am strong, when I am on your shoulders Sometimes, I think I glimpse eternity Then, I am still and wait here in the silence There is no life - no life without its hunger; Until you come and sit awhile with me When I am down and, oh my soul, so weary When troubles come and my heart burdened be You raise me up, so I can stand on mountains You raise me up, to more than I can be You raise me up, to walk on stormy seas 7
8
정렬 예 2 $ sort +2 -3 you.txt Then, I am still and wait here in the silence When I am down and, oh my soul, so weary Until you come and sit awhile with me When troubles come and my heart burdened be Each restless heart beats so imperfectly; You raise me up, so I can stand on mountains You raise me up, to more than I can be You raise me up, to walk on stormy seas There is no life - no life without its hunger; I am strong, when I am on your shoulders Sometimes, I think I glimpse eternity But when you come and I am filled with wonder, 8
9
파일 자르기 : split 명령어 하나의 파일을 일정한 크기의 여러 개 작은 파일로 분할 $ split [- 옵션 ] 입력파일 [ 출력파일 ] 1000 줄씩 분할하여 xaa, xab,... 형태의 파일명으로 저장 -l n 옵션 : 분할할 줄 수를 지정 예 $ split -l 10 you.txt $ ls -l -rw-r--r-- 1 chang faculty 341 2 월 16 일 14:36 xaa -rw-r--r-- 1 chang faculty 177 2 월 16 일 14:36 xab -rw-r--r-- 1 chang faculty 518 2 월 15 일 19:33 you.txt 9
10
파일 비교 : cmp 명령어 $ cmp 파일 1 파일 2 두 파일이 같은지 비교한다. 두 파일이 같으면 아무 것도 출력하지 않음. 두 파일이 서로 다르면 서로 달라지는 위치 출력 $ cmp you.txt me.txt you.txt me.txt 다름 : 340 자, 10 행 10
11
diff 명령어 $ diff 파일 1 파일 2 두 파일을 줄 단위로 비교하여 그 차이를 출력 -i 옵션은 대소문자를 무시하여 비교 출력은 첫 번째 파일을 두 번째 파일 내용과 같도록 바꿀 수 있는 편 집 명령어 형태 $ diff you.txt me.txt 9a10,13 > > You raise me up, so I can stand on mountains > You raise me up, to walk on stormy seas > I am strong, when I am on your shoulders 11
12
diff 출력 : 편집 명령어 추가 (a) 첫 번째 파일의 줄 n1 이후에 두 번째 파일의 n3 부터 n4 까지의 줄들을 추가 n1 a n3,n4 > 추가할 두 번째 파일의 줄들 삭제 (d) 첫 번째 파일의 n1 부터 n2 까지의 줄들을 삭제하면 두 번째 파일의 줄 n3 이후와 서 로 같다. n1,n2 d n3 < 삭제할 첫 번째 파일의 줄들 변경 (c) 첫 번째 파일의 n1 부터 n2 까지의 줄들을 두 번째 파일의 n3 부터 n4 까지의 줄들로 대치하면 두 파일은 서로 같다. n1,n2 c n3,n4 < 첫 번째 파일의 대치될 줄들 -- > 두 번째 파일의 대치할 줄들 12
13
링크 기존의 파일에 또 하나의 새로운 이름 혹은 경로 하드 링크 심볼릭 링크 (-s 옵션 ) $ ln [-s] 파일 1 [ 파일 2] $ ln [-s] 파일 + 디렉터리 하드 링크 (hard link) $ ln hello.txt hi.txt $ ls -l -rw------- 2 chang faculty 15 11 월 7 일 15:31 hello.txt -rw------- 2 chang faculty 15 11 월 7 일 15:31 hi.txt 13
14
심볼릭 링크 (symbolic link) 심볼릭 링크 다른 파일을 가리키고 있는 별개의 파일이다. 원래 파일의 위치에 대한 정보가 들어 있어서, 심볼릭 링크를 참조하면, 가리키고 있는 파일을 대신 참조 $ ln -s hello.txt hi.txt $ ls -l -rw------- 1 chang faculty 15 11 월 7 일 15:31 hello.txt lrwxrwxrwx 1 chang faculty 9 1 월 24 일 12:56 hi.txt -> hello.txt 14
15
파일 찾기 : find 명령어 find 명령어 옵션의 검색 조건에 따라 대 상 디렉터리 밑에서 해당되 는 파일을 모두 찾아 출력한 $ find 디렉터리 [- 옵션 ] 검색 조건 및 처리 방법설명 -name 파일파일 이름으로 찾는다. -atime +n 접근 시간이 n 일 이전인 파일을 찾는다. -atime -n 접근 시간이 n 일 이내인 파일을 찾는다. -mtime +n n 일 이전에 변경된 파일을 찾는다. -mtime -n n 일 이내에 변경된 파일을 찾는다. -perm nnn 파일 권한이 nnn 인 파일을 찾는다. -type x 파일 타입이 x 인 파일들을 찾는다. -size n 사이즈가 n 이상인 파일들을 찾는다. -links n 링크된 개수가 n 인 파일들을 찾는다. -user 사용자이름사용자이름으로 찾는다. -group 그룹이름그룹이름으로 찾는다. -print 찾은 파일의 절대 경로명을 화면에 출력한다. -exec cmd {}; 찾은 파일들에 대해 cmd 명령어를 실행한다. 15
16
find 명령어 예 $ find /usr -name *.c -print /usr 밑에.c 파일들을 찾아 경로명 출력 $ find. -name ping –ls 이름이 ping 인 파일을 찾아 ls 명령어 수행 $ find. -type d -print 디렉터리 (d) 파일을 찾아 경로명을 출력 $ find. -perm 700 -ls 사용권한 700 인 파일 찾아 ls 명령어 수행 $ find. -size +1024 -print 1024 블럭 이상인 파일을 찾아 출력 $ find. -name core -size +2048 –ls 파일 이름이 core 이고 크기가 2048 블럭 이상인 파일을 찾아 ls 명령어 수행 $ find. -user chang -print 파일 소유자가 chang 인 파일을 찾아 출력 $ find. -atime +30 -print 30 일 이전에 접근되었던 파일을 찾아 출력 $ find. -mtime -7 -print 7 일 이내에 수정된 적이 있는 파일들 출력 $ find. -name core -exec rm -i {} \ ; 이름이 core 인 파일에 대해 rm 명령어 수행 $ find. -name *.c -atime +30 -exec ls -l {} \ ; 30 일 이전에 접근된 파일 중 *.c 를 찾아 ls -l 명령어 수행 16
17
5.2 명령어 스케줄링 17
18
cron 시스템 유닉스의 명령어 스케줄링 시스템으로 crontab 파일에 명시된 대로 주기적으로 명령을 수행한다. crontab 명령어 $ crontab 파일 crontab 파일을 cron 시스템에 등록 $ crontab -l [ 사용자 ] 사용자의 등록된 crontab 파일 리스트 $ crontab -e [ 사용자 ] 사용자의 등록된 crontab 파일 수정 / 생성 $ crontab -r [ 사용자 ] 사용자의 등록된 crontab 파일 삭제 crontab 파일 7 개의 필드로 구성 분 시 일 월 요일 [ 사용자 ] 명령 18
19
crontab 파일 예 chang.cron _____________________________________________________________ 30 18 * * * rm /home/chang/tmp/* ________________________________________________________________ $ crontab chang.cron 다른 crontab 파일의 예 20 1 * * * root find /tmp -atime +3 -exec rm -f () ';' 매일 새벽 1 시 20 분에 3 일간 접근하지 않은 /tmp 내의 파일을 삭제 30 1 * 2,4,6,8,10,12 3-5 /usr/bin/wall /var/tmp/message 2 개월마다 수요일부터 금요일까지 1 시 30 분에 wall 명령을 사용해서 시스템의 모든 사용자에게 메시지를 전송 19
20
at 명령어 미래의 특정 시간에 지정한 명령어가 한 번 실행되도록 한다. 실행할 명령은 표준입력을 통해서 받는다. $ at [- 옵션 ] 시간 예 $ at 1145 jan 31 at> sort infile > outfile at> 20
21
5.3 디스크 및 아카이브 21
22
df 유틸리티 $ df 파일시스템 * 파일시스템에 대한 정보 ( 사용중 / 사용 가능한 디스크 공간 ) $ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 49594228 7352576 39681696 16% / /dev/sda5 86495548 66226168 15875608 81% /home /dev/sdb1 141122196 103870536 30083060 78% /home1 /dev/sda1 101086 11455 84412 12% /boot tmpfs 1037652 0 1037652 0% /dev/shm 22
23
du 유틸리티 $ du [-s] 파일명 * 파일의 디스크 사용량을 보여준다. 파일을 명시하면 해당 파일의 사용량을 아니면 현재 디렉터리 내의 모든 파일들의 사용량을 보여준다. $ du 12./htdocs/graphics 258./htdocs/images 42./htdocs/lecture/math 2582./htdocs/lecture/sp/lab 33196./htdocs/lecture/sp... $ du –s-s(sum) 22164. 23
24
아카이브 백업 또는 다른 장소로의 이동을 위해 여러 파일들을 하나로 묶어놓은 묶음 아카이브를 만들거나 푸는데 tar(tape archive) 명령어 사용 tar 명령어 옵션 : c(create), v(verbose), x(extract), t(table of contents), f(file) $ tar -cvf 타르파일 파일 + 여러 파일들을 하나의 타르파일로 묶으며 보통 확장자로.tar 사용 $ tar -xvf 타르파일 하나의 타르파일을 풀어서 원래 파일들을 복원 $ tar -tvf 타르파일 타르파일의 내용을 확인 24
25
아카이브 : 예 현재 디렉터리에 있는 모든 파일을 다른 곳으로 옮기기 $ tar -cvf src.tar * src.tar 를 다른 곳으로 이동 $ tar -tvf src.tar $ tar -xvf src.tar 25
26
압축 compress/ uncompress 명령어 $ compress 파일 * $ uncompress 파일.Z * gzip 명령어 $ gzip 파일 * $ gzip -d 파일.gz* 사용 방법 파일들을 하나의 타르파일로 묶은 후 compress/gzip 을 사용해 압축 파일 복원 : 압축을 해제한 후, 타르파일을 풀어서 원래 파일들을 복원 26
27
압축 예 사용예 $ tar -cvf src.tar * $ gzip src.tar 이 파일을 원하는 곳으로 이동 $ gzip -d src.tar.gz $ tar -xvf src.tar 27
28
5.4 AWK 28
29
AWK 일반 스크립트 언어 AWK(Aho, Weinberger, Kernighan) 텍스트 형태로 되어있는 줄을 필드로 구분하여 처리한다. 필드는 일단은 줄을 구성하는 단어 정도로 생각하자. awk 프로그램 간단한 프로그램은 명령줄에 직접 작성하여 수행 awk 프로그램을 파일로 작성하여 -f 옵션을 이용하여 수행 $ awk [-Fc] 프로그램 파일 * $ awk [-Fc] [-f 프로그램파일 ] 파일 * 29
30
awk 프로그램 조건과 액션을 기술하는 명령어들로 구성됨 [ 조건 ] [ { 액션 } ] 대상 파일의 줄들을 스캔하여 조건을 만족하는 줄에 액션 수행 $ awk ‘{ print NF, $0 }’ you.txt $ awk ‘{ print $1, $3, $NF }’ you.txt $ awk ‘NR > 1 && NR < 4 { print NR, $1, $3, $NF }’ you.txt 30
31
조건과 액션 조건 (condition) BEGIN // 파일 시작 END// 파일 끝 관계 연산자 혹은 논리 연산자 를 포함한 조건식 / 패턴 / 패턴에 해당하는 줄 패턴 1, 패턴 2 패턴 1 을 포함한 줄부터 패턴 2 를 포함한 줄까지 액션 (action) if ( 조건 ) 실행문 [else 실행문 ] while ( 조건 ) 실행문 for ( 식 ; 조건 ; 식 ) 실행문 break continue 변수 = 식 print [ 식들의 리스트 ] printf 포맷 [, 식들의 리스트 ] next 현재 줄에 대한 나머지 패턴 건너 뛰기 exit 현재 줄의 나머지 부분 건너뛰기 { 실행문 리스트 } 31
32
AWK 프로그램 예 [ 예제 1] BEGIN { print " 파일 시작 :", FILENAME } { print $1, $NF } END { print " 파일 끝 " } [ 예제 2] BEGIN { print " 파일 시작 " } { printf "line %d: %d \n", NR, NF; line++; word + = NF } END { printf " 줄 수 = %d, 단어 수 = %d\n", line, word } 32
33
AWK 프로그램 예 [ 예제 3] { for (I = 1; I <= NF; I += 2) printf "%s ", $I printf " \n" } [ 예제 4] /st.*e/ {print $0 } [ 예제 5] /strong/, /heart/ { print $0 } 33
34
5.5 vi 에디터 34
35
vi 에디터 기본 텍스트 에디터로 매우 강력한 기능을 가지고 있으나 배우는데 상당한 시간과 노력이 필요하다. $ vi 파일 * 35
36
명령 모드 / 입력 모드 vi 에디터는 명령 모드와 입력 모드가 구분되어 있으며 시작하면 명령 모드이다. 마지막 줄 모드 :wq 작업 내용을 저장하고 종료 (ZZ 와 동일한 기능 ) :q 아무런 작업을 하지 않은 경우의 종료 :q! 작업 내용을 저장하지 않고 종료 36
37
vi 내부 명령어 원하는 위치로 이동하는 명령 입력모드로 전환하는 명령 수정 혹은 삭제 명령 복사 및 붙이기 기타 명령 37
38
원하는 위치로 이동하는 명령 커서 이동 h, ← 한 칸 왼쪽 j, ↓ 한 칸 아래쪽 k, ↑ 한 칸 위쪽 l, → 한 칸 오른쪽 BACKSPACE 왼쪽으로 한 칸 SPACE 오른쪽으로 한 칸 - 이전 줄의 처음 + 다음 줄의 처음 RETURN 다음 줄의 처음 0 현재 줄의 맨 앞 $ 현재 줄의 끝 ^ 현재 줄의 첫 글자 W 다음단어의 첫 글자 B 이전단어의 첫 글자 화면 이동 ^F 한 화면 아래로 ^B 한 화면 위로 ^D 반 화면 아래로 ^U 반 화면 위로 특정 줄로 이동 nGn 번째 줄로 이동 1G 첫 줄로 이동하기 G 마지막 줄로 이동하기 :n n 번째 줄로 이동 탐색 (search) / 탐색패턴 forward 탐색 ? 탐색패턴 backward 탐색 38
39
입력모드로 전환하는 명령 입력모드로 전환 i 커서 위치 앞에 삽입 a 커서 위치 뒤에 삽입 I 현재 줄의 앞에 삽입 A 현재 줄의 뒤에 삽입 o 현재 줄의 아래에 전개 O 현재 줄의 위에 전개 39
40
수정 혹은 삭제 명령 현재 커서를 중심으로 수정 r 단지 한 글자만 변경 R 입력하는 대로 겹쳐 쓰기 s 현재 글자 삭제 삽입 상태 C 커서로부터 줄 끝까지 변경 cc 현재 줄 전체를 변경 cw 현재 단어를 삭제하고 변경 삭제 x 커서가 있는 문자 지우기 X 커서의 왼쪽 문자 지우기 D 커서부터 줄끝까지 지우기 Dd 현재 줄의 전체를 지우기 :n,m d n~m 번째 줄 삭제 40
41
대치, 수행취소 / 재수행 대치 명령 각 줄의 해당되는 첫 번째 단어만 대치 :s/ 패턴 / 스트링 현재 줄에서 대치 :n,m s/ 패턴 / 스트링 지정된 줄 범위에서 대치 :n s/ 패턴 / 스트링 지정된 줄 (n) 에서 대치 s/ 패턴 / 스트링 /g 해당되는 모든 단어 대치 수행취소 / 재수행 u 방금 전 수행 내용 취소 (Undo) U 현재 줄 수행 내용을 취소. 방금 전 수행 내용을 반복 (Redo) 41
42
복사 / 붙이기 줄 내용 복사 (copy) nY 현재 줄에서부터 n 개의 줄을 복사 :n,m y n 번째 줄에서 m 번째 줄까지를 버퍼에 복사함 마지막으로 삭제 / 복사한 내용을 붙이기 (put). p 버퍼 내용을 커서의 뒤 ( 혹은 아래 ) 에 삽입 P 버퍼 내용을 커서의 앞 ( 혹은 위 ) 에 삽입 42
43
기타 다른 파일 편집 :e 파일이름 현재 파일 대신에 주어진 파 일 열기 :e! 파일이름 저장 여부를 점검하지 않고 파일 변경 :e# 이전 파일을 다시 열기 줄 번호 붙이기 줄 번호를 붙이거나 없애기 :set number 줄번호 붙이기 :se nu 줄번호 붙이기 :set nonumber 줄번호 없애기 :se non 줄번호 없애기 쉘 명령어 수행 편집기 내에서 쉘 명령어 수 행 :!ls :!cat 43
44
핵심 개념 grep 명령어는 대상 파일들을 읽어서, 해당 패턴을 검색하고, 패턴을 포함하는 줄의 내용을 출력한다. sort 명령어는 텍스트 파일을 줄 단위로 정렬한다. cron 은 유닉스의 명령어 스케줄링 시스템으로 crontab 파일에 명시된 대로 주기적으로 명령을 수행한다. 유닉스에서는 tar 명령어를 사용하여 여러 파일을 하나로 묶은 후에 compress 혹은 gzip 명령어를 이용하여 압축한다. awk 프로그램은 조건과 액션을 기술하는 명령어들로 구성되며 텍스 트 파일의 줄들을 스캔하여 조건을 만족하는 각 줄에 대해 액션을 수 행한다. vi 에디터는 명령 모드와 입력 모드가 구분되어 있으며 시작하면 명령 모드이다. 44
Similar presentations