[ 2020 2학기 / 5주차 ]
1. 파일 속성으로 파일 찾기
1.1 find 명령어
$ find 디렉터리 [-옵션]
: 파일 이름 또는 속성을 사용해서 해당 파일을 찾는 명령어다.
1.2 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 링크된 개수가 n인 파일들을 찾는다. |
-user 사용자이름 | 사용자이름으로 찾는다. |
-group 그룹이름 | 그룹이름으로 찾는다. |
찾은 파일의 절대 경로명을 화면에 출력한다. | |
-ls | 찾은 파일에 대해 ls –dils 명령어 실행 결과를 출력한다. |
-exec cmd {}; | 찾은 파일들에 대해 cmd 명령어를 실행한다. |
1.3 검색된 파일 처리
find 명령어의 -exec 옵션으로, 검색한 모든 파일을 대상으로 동일한 작업(명령어)을 수행할 수 있다.
예)
$ find . -name core -exec rm -i {}\;
$ find . -name *.c -atime +30 -exec ls -l {}\;
2. 파일 필터링
2.1 grep 명령어
$ grep 패턴 파일*
: 파일(들)을 대상으로 지정된 패턴의 문자열을 검색하고, 해당 문자열을 포함하는 내용들을 출력한다.
2.2 grep 명령어의 옵션
옵션 | 기능 |
-i | 대소문자를 무시하고 검색한다. |
-l | 해당 패턴이 들어있는 파일 이름을 출력한다. |
-n | 각 줄의 줄번호도 함께 출력한다. |
-v | 명시된 패턴을 포함하지 않는 줄을 출력한다. |
-c | 패턴과 일치하는 줄 수를 출력한다. |
-w | 패턴이 하나의 단어로 된 것만 검색한다. |
2.3 정규식
문자 | 의미 | 예 |
? | 한 글자 혹은 없음을 의미 | ‘ab?’는 ab 혹은 ab 다음에 한 글자가 오는 문자열 |
. | 임의의 한 문자를 의미 | ‘a...b’는 a로 시작해서 b로 끝나는 5글자 문자열 |
* | 바로 앞의 것을 0번 이상의 반복 | ‘a*b’는 b, ab, aab, aaab, ... 등의 문자열 |
[] | [과 ] 사이의 문자 중 하나를 의미 – 기호: 문자의 범위를 지정 |
‘[abc]d’는 ad, bd, cd를 뜻한다. [a-z]는 a부터 z까지 중 하나 |
[^...] | [^ 과 ] 사이의 문자를 제외한 나머지 문자 중 하나를 의미 | ‘[^abc]d’는 ad, bd, cd는 포함하지 않고 ed, fd 등 은 포함. [^a-z]는 소문자가 아닌 모든 문자 |
^,& | 각각 줄의 시작과 끝을 의미 | ‘^문자열’은 문자열로 시작하는 줄을, ‘문자열$’은 문자열로 끝나는 줄을 나타냄. |
2.4 파이프와 함께 grep 명령어 사용
어떤 명령어를 실행하고, 그 결과에서 원하는 단어나 문자열을 검색하기 위해서 사용한다.
파이프는 한 명령어의 실행결과를 다른 명령어의 입력으로 전달해주는 '파이프' 역할을 한다.
예)
$ ls -l | grep chang
$ ps –ef | grep chang
3. 파일 정렬
3.1 sort 명령어
$ sort [-옵션] 파일*
: 텍스트 파일(들)의 내용을 줄 단위로 정렬한다. 옵션에 따라 다양한 형태로 정렬한다.
- 정렬 필드를 기준으로 줄 단위로 오름차순으로 정렬한다.
- 기본적으로는 각 줄의 첫 번째 필드가 정렬 필드로 사용된다.
- -r 옵션을 사용하여 내림차순으로 정렬할 수 있다.
3.2 정렬 필드 지정
필드 지정 | 기능 |
-k 필드번호 | 필드번호에 해당하는 필드를 기준으로 정렬한다. 이 옵션에서 필드번호는 1부터 시작된다. |
+시작필드 -종료필드 |
시작필드부터 종료필드-1까지의 필드들을 기준으로 정렬한다. 이 때 필드 번호는 0부터 시작된다. |
3.3 sort 명령어의 옵션
옵션 | 기능 |
-b | 앞에 붙는 공백은 무시한다. |
-c | 이미 정렬된 상태인지 확인 |
-d | 숫자, 문자, 공백만 비교하여 사전식 순서로 정렬한다. [a-zA-Z0-9 ] |
-f | 대소문자를 구분하지 않고 정렬한다. |
-n | 숫자 문자열의 숫자 값에 따라 비교하여 정렬한다. |
-r | 역순(내림차순)으로 정렬한다. |
-t 문자 | 지정한 문자를 필드 구분자로 사용한다. |
ⓛ -o 출력파일 옵션
정렬된 내용을 지정된 파일에 저장할 수 있다.
$ sort –o sort.txt you.txt
② -n 옵션
숫자 문자열의 경우에 숫자가 나타내는 값의 크기에 따라 비교하여 정렬할 수 있다.
예: “49”와 “100”
4. 파일 비교
4.1 cmp 명령어
$ cmp 파일1 파일2
: 파일1과 파일2가 같은지 비교한다.
- 두 파일이 같으면 아무 것도 출력하지 않는다.
- 두 파일이 서로 다르면, 달라지는 위치를 출력한다.
예)
$ cmp you.txt me.txt
you.txt me.txt 다름: 340 자, 10 행
4.2 diff 명령어
$ diff [-i] 파일1 파일2
: 파일1과 파일2를 줄 단위로 비교하여 그 차이점을 출력한다. -i 옵션은 대소문자를 무시하여 비교한다.
- 첫 번째 파일을 두 번재 파일 내용과 같게 만드는 편집 명령어 형태.
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 |
5. 기타 파일 조작
5.1 파일 나누기 : split 명령어
$ split [-l n] 입력파일 [출력파일]
: 하나의 입력파일을 일정한 크기의 여러 개 작은 파일로 분할한다. -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
5.2 파일 합병
① cat 명령어
$ cat 파일1 파일2 > 파일3
: 파일1과 파일2의 내용을 붙여서 새로운 파일3을 만들어 준다.
예)
$ cat xaa xab > xmerge
② paste 명령어
$ paste [ -s ][ -d구분문자 ] 파일*
: 여러 파일들을 병합하여 하나의 파일을 만들어 준다.
-s : 한 파일 끝에 다른 파일 내용을 덧붙인다.
-d구분문자 : 어떠한 문자로 열을 구분하는지 지정한다. 기본값은 탭 문자이다.
예)
$ paste -s xaa xab > xmerge
6. 명령어 스케줄링
6.1 주기적 실행 cron
① cron 시스템
유닉스의 명령어 스케줄링 시스템으로 crontab 파일에 명시된 대로 주기적으로 명령을 수행한다.
② crontab 파일 등록법
$ crontab 파일
: crontab 파일을 cron 시스템에 등록한다.
[crontab 파일]
- 7개의 필드로 구성
- 분 시 일 월 요일 [사용자] 명령
③ crontab 명령어
$ crontab -l [사용자]
사용자의 등록된 crontab 파일 리스트를 보여준다.
$ crontab -e [사용자]
사용자의 등록된 crontab 파일을 수정 혹은 생성한다.
$ crontab -r [사용자]
사용자의 등록된 crontab 파일을 삭제한다.
6.2 한번 실행 at
ⓛ at 명령어
$ at [-f 파일] 시간
: 지정된 시간에 명령이 실행되도록 등록한다. 실행할 명령은 표준입력으로 받는다.
-f : 실행할 명령들을 파일로 작성해서 등록할 수도 있다.
• at -r 옵션
$ at -r 작업번호
지정된 작업번호에 해당하는 작업을 제거한다.
예)
$ at 1145 jan 31
at> sort infile > outfile
at> <EOT>
$ at –r 3
② atq 명령어
$ atq
: at 시스템의 큐에 등록되어 있는 at 작업을 볼 수 있다.
7. 디스크 및 아카이브
7.1 tar 아카이브
ⓛ아카이브
백업 또는 다른 장소로의 이동을 위해 여러 파일들을 하나로 묶어놓은 묶음
아카이브를 만들거나 푸는데 tar(tape archive) 명령어 사용
② tar 명령어
옵션: c(create), v(verbose), x(extract), t(table of contents), f(file)
$ tar -cvf 타르파일 파일+
여러 파일들을 하나의 타르파일로 묶는다. 보통 확장자로 .tar 사용
$ tar -xvf 타르파일
하나의 타르파일을 풀어서 원래 파일들을 복원한다.
$ tar -tvf 타르파일
타르파일의 내용을 확인한다.
7.2 tar 아카이브: 사용 예
• 현재 디렉터리에 있는 모든 파일을 다른 곳으로 옮기기
$ tar -cvf src.tar * → 파일을 하나로 묶는다.
… src.tar를 다른 곳으로 이동
$ tar -tvf src.tar → 파일 내용을 확인한다.
$ tar -xvf src.tar → 목적 위치에서 파일을 복원한다.
8. 파일 압축
8.1 gzip 명령어
ⓛ 명령어
$ gzip [옵션] 파일*
: 파일(들)을 압축하여 .gz 파일을 만든다.
-d : 압축을 해제한다.
-l : 압축파일 안에 있는 파일 정보(압축된 크기, 압축률) 출력한다.
-r : 하위 디렉터리까지 모두 압축한다.
-v : 압축하거나 풀 때 압축률, 파일명을 출력한다.
② 사용법
$gzip -d 파일.gz*
gzip으로 압축된 파일들을 복원한다.
$ gunzip 파일.gz*
gzip으로 압축된 파일들을 복원한다.
파일 압축 : 파일들을 하나의 타르파일로 묶은 후 gzip을 사용해 압축
파일 복원: 압축을 해제한 후, 타르파일을 풀어서 원래 파일들을 복원
예)
$ tar -cvf src.tar *
$ gzip src.tar
… 이 파일을 원하는 곳으로 이동
$ gzip -d src.tar.gz
$ tar -xvf src.tar
8.2 compress / uncompress 명령어
$ compress 파일*
: 파일(들)을 압축하여 .Z 파일을 만든다.
$ uncompress 파일.Z*
: 압축된 파일(들)을 복원한다.
예)
$ ls
304 -rw-r--r-- 1 chang faculty 143360 Oct 8 2012 src.tar
$ compress src.tar
$ ls
54 -rw-r--r-- 1 chang faculty 27422 Oct 8 2012 src.tar.Z
$ uncompress src.tar.Z
$ ls
304 -rw-r--r-- 1 chang faculty 143360 Oct 8 2012 src.tar
8.3 RPM(Red Hat Package Manager)
- 원래 레드햇에서 사용되었던 패키지 파일 및 관리 소프트웨어
- 현재는 Linux Standard Base의 표준 패키지 포맷 중 하나이다.
- 각종 소프트웨어의 설치 및 업데이트를 편리하게 할 수 있다.
• 소프트웨어 설치 및 업데이트
rpm -Uvh foo-1.0-1.i386.rpm
• 이미 설치된 패키지 대치
rpm -ivh --replacefiles foo-1.0-1.i386.rpm
• 패키지 제거하기
rpm -e foo-1.0-1.i386
9. AWK
9.1 AWK 프로그램
$ awk 프로그램 파일*
$ awk [-f 프로그램파일] 파일*
: 텍스트 파일을 대상으로 하여 각 줄을 필드들로 구분하고 이들을 awk 프로그램이 지시하는 대로 처리한다.
- 간단한 프로그램은 명령줄에 직접 작성하여 수행
- awk 프로그램을 파일로 작성하여 -f 옵션을 이용하여 수행
- 조건과 액션을 기술하는 명령어들로 구성됨 [ 조건 ] [ { 액션 } ]
- 대상 파일의 각 줄을 스캔하여 조건을 만족하는 줄에 액션 수행
간단한 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
9.2 조건과 액션
ⓛ 조건(condition)
BEGIN | //파일 시작 |
END | //파일 끝 |
관계 연산자 혹은 논리 연산자를 포함한 조건식 | |
/패턴/ | 패턴에 해당하는 줄 |
패턴1, 패턴2 | 패턴1을 포함한 줄부터 패턴2를 포함한 줄까지 |
② 액션(action)
if (조건) 실행문 [else 실행문] | 조건이 참이면 실행문 실행 |
while (조건) 실행문 | 조건이 참일 동안 실행문 실행 |
for (식; 조건; 식) 실행문 | 조건이 참일 동안 실행문 실행 |
break | 반복문 탈출 |
continue | continue 이후의 식들을 무시 |
변수 = 식 | 대입 |
print [식들의 리스트] | 출력 |
printf 포맷 [, 식들의 리스트] | 출력 필드 너비 지정 |
next | 현재 줄에 대한 나머지 패턴 건너뛰기 |
exit | 현재 줄의 나머지 부분 건너뛰기 |
{실행문 리스트} |
'Study > LINUX' 카테고리의 다른 글
[2020-2 리눅스 이론] 7주차 (0) | 2020.11.14 |
---|---|
[2020-2 리눅스 이론] 6주차 (0) | 2020.11.08 |
[2020-2 리눅스 실습] 5주차 (0) | 2020.10.31 |
[2020-2 리눅스 이론] 3주차 (0) | 2020.09.25 |
[2020-2 리눅스 실습] 3주차 (0) | 2020.09.25 |