혜랑's STORY

[2020-2학기 리눅스 5주차] : 이론 본문

2020 SISS 21기 활동/2학기 리눅스

[2020-2학기 리눅스 5주차] : 이론

hyerang0125 2020. 11. 1. 14:34

#파일 속성으로 파일 찾기

- 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이상인 파일들을 찾는다.
-link n 링크된 개수가 n인 파일들을 찾는다.
-user 사용자이름 사용자 이름으로 찾는다.
-gruop 그룹이름 그룹이름으로 찾는다.
-print 찾은 파일의 절대 경로명을 화면에 출력한다.
-ls 찾은 파일에 대해 ls -dils 명령어 실행 결과를 출력한다.
-exec cmd {}; 찾은 파일들에 대해 cmd 명령어를 실행한다.

- find 명령어의 exec 옵션 : 검색한 모든 파일을 대상으로 동일한 작업(명령어)을 수행

 

# 파일 필터링

- grep 명령어

$ grep 패턴 파일*
-> 파일(들)을 대상으로 지정된 패턴의 문자열을 검색하고, 해당 문자열을 포함하는 줄들을 출력한다.

- grep 명령어의 옵션

옵션 기능
-i 대소문자를 무시하고 검색한다.
-l 해당 패턴이 들어있는 파일 이름을 출력한다.
-n 각 줄의 줄번호도 함꼐 출력한다.
-v 명시된 패턴을 포함하지 않는 줄을 출력한다.
-c 패턴과 일치하는 줄 수를 출력한다.
-w 패턴이 하나의 단어로 된 것만 검색한다.

- 정규식(Regular Expression)

문자 의미
? 한 글자 혹은 없음을 의미한다. ‘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]는 소문자가 아닌 모든 문자
^,$ 각각 줄의 시작과 끝을 의미한다. ‘^문자열’은 문자열로 시작하는 줄을 나타낸다. ‘문
자열$’은 문자열로 끝나는 줄을 나타낸다.

 

# 파일 정렬

- sort 명령어

$ sort [-옵션] 파일*
-> 텍스트 파일(들)의 내용을 줄 단위로 정렬한다. 옵션에 따라 다양한 형태로 정렬한다.

- 정렬 필드 지정

필드 지정 기능
-k 필드 번호 필드번호에 해당하는 필드를 기준으로 정렬한다.
이 옵션에서 필드번호는 1부터 시작된다.
+ 시작필드
- 종료필드
시작필드부터 종료필드-1까지의 필드들을 기준으로 정렬한다.
이때 필드버노는 0부터 시작된다.

- sort 명령어의 옵션

옵션 기능
-b 앞에 붙는 공백은 무시한다.
-c 이미 정렬된 상태인지 확인
-d 숫자, 문자. 공백만 비교하여 사전식 순서로 정렬한다. [a-zA-Z0-9]
-f 대소문자를 구분하지 않고 정렬한다.
-n 숫자 문자열의 숫자 값에 따라 비교하여 정렬한다.
-r 역순(내림차순)으로 정렬한다.
-t 문자 지정한 문자를 필드 구분자로 사용한다.

 

# 파일 비교

- cmp 명령어

$ cmp 파일1 파일2
->파일1과 파일2가 같은지 비교한다.
-> 두 파일이 같으면 아무 것도 출력하지 않음. 두 파일이 서로 다르면 서로 달라지는 위치 출력

- diff 명령어

$ diff [-i] 파일1 파일2
-> 파일1과 파일2를 줄 단위로 비교하여 그 차이점을 출력한다. (-i옵션은 대소문자를 무시하여 비교한다.)
-> 첫번째 파일을 두번쨰 파일 내용과 같도록 바꿀 수 있는 편집 명령어 형태로 출력

 

# 기타 파일 조작

- split 명령어 : 파일 나누기

$ split [-l n] 입력파일 [출력파일]
-> 하나의 입력파일을 일정한 크기의 여러 개 작은 파일들로 분할한다. -l n 옵션을 이용하여 분활할 줄 수를 지정할 수 있다.

- cat 명령어를 이용한 파일 합병

$ cat 파일1 파일2 > 파일3
-> 파일1과 파일2의 내용을 붗여서 새로운 파일3을 만들어 준다.

- paste 명령어를 이요안 파일 병합

$ paste [-s][-d구분문자] 파일*
-> 여러 파일들을 병합하여 하나의 파일을 만들어 준다.
( -s : 한 파일 끝에 다른 파일 내용을 덧붙인다. / -d구분문자 : 어떠한 문자로 열을 구분하는지 지정한다. 기본값은 탭문자)

 

# 명령어 스케줄링

- 주기적 실행 : cron(유닉스의 명령어 스케줄링 시스템으로 crontab 파일에 명시된 대로 주기적으로 명령을 수행한다.)

- crontab 파일 등록법

$ crontab 파일
-> crontab 파일을 cron 시스템에 등록한다.

- crontab 명령어

$ crontab -l [사용자]
-> 사용자의 등록된 corntab 파일 리스트를 보여준다.

$ crontab -e [사용자]
-> 사용자의 등록된 corntab 파일을 수정 혹은 생성한다.

$ crontab -r [사용자]
-> 사용자의 등록된 corntab 파일을 삭제한다.

- 한번 실행 : at(미래의 특정 시간에 지정한 명령어가 한 번 실행되도록 한다. 실행할 명령은 표준입력을 통해서 받는다.)

$ at [-f 파일] 시간
-> 지정된 시간에 명령이 실행되도록 등록한다. 실행할 명령은 표준입력으로 받는다. (-f : 실행할 명령들을 파일로 작성해서 등록할 수도 있다.)

 

# 디스크 및 아카이브

- 아카이브 : 백업 또는 다른 장소로의 이동을 위해 여러 파일들을 하나로 묶어놓은 묶음. 아카이브를 만들거나 푸는데 tar(tape archive) 명령어 사용

$ tar -cvf 타르파일 파일+
-> 여러 파일들을 하나의 타르파일로 묶는다. 보통 확장자로 .tar사용

$ tar -xvf 타르파일
-> 하나의 타르파일을 풀어서 원래 파일들을 복원한다.

$ tar -tvf 타르파일
-> 타르파일의 내용을 확인한다.

 

# 파일 압축

- gizp 명령어 : 파일들을 하나의 타르파일로 묶은 후 compress/gzip을 사용해 압축

$ gzip [옵션] 파일*
-> 파일들을 압축하여 .gz 파일을 만든다.

-d : 압축을 해제한다.
-l : 압출파일 안에 있는 파일 정보(압축된 크기, 압축물) 출력한다.
-r : 하위 디렉터리까지 모두 압축한다.
-v : 압축하거나 풀 때 압축률, 파일명을 출력한다.

- compress/ uncompress 명령어

$ compress 파일*
-> 파일들을 압축하여 .Z 파일을 만든다.

$ uncompress 파일.Z*
-> 압축된 파일들을 복원한다.

 

# AWK

- 일반 스크립트 언어

- AWL(Aho, Weinberger, Kernighan)

- 텍스트 형태로 되어있는 각 줄을 필드로 구분하여 처리하낟.

- 필드 : 줄을 구성하는 단어

$ awk 프로그램 파일*
$ awk [-f 프로그램파일] 파일*
-> 텍스트 파일을 대상으로 하여 각 줄을 필드로 구분하고 이들을 awk 프로그램이 지시하는대로 처리한다.