Published 2020. 10. 31. 22:26

[ 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 그룹이름 그룹이름으로 찾는다.
-print 찾은 파일의 절대 경로명을 화면에 출력한다.
-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
복사했습니다!