본문 바로가기

Linux

리눅스 스터디 5주차

1. 파일 속성으로 파일 찾기

 1) find 명령어

  - 파일 이름이나 속성을 이용하여 해당하는 파일을 찾는다.

  - 사용법

   $ find 디렉터리 [-옵션]

   : 옵션의 검색 조건에 따라 지정된 디렉터리 아래에서 해당되는 파일들을 모두 찾아 출력한다.

 

 2) find 명령어 검색 조건

 

홈 디렉터리에서 파일 이름이 copy.txt인 파일을 찾고, 찾은 파일의 절대 경로명을 출력.
홈 디렉터리에서 파일 이름이 copy.txt인 파일을 찾고, 해당 파일의 속성을 리스트.

 

  - 파일의 접근 권한(-perm)으로 검색

 

  - 파일의 접근 시간(-atime) 혹은 수정 시간(-mtime)으로 검색

 

   +n : 현재 시각을 기준으로 n일 이상 전

   n : 현재 시각을 기준으로 n일 전

   -n : 현재 시각을 기준으로 n일 이내

 

현재 시각을 기준으로 60일 이상 전에 접근한 파일들의 절대 경로명 출력.
현재 시각을 기준으로 30일 이내에 접근한 파일들의 절대 경로명 출력.

 

  - 파일의 소유자(-user)로 검색

 

  - 파일 크기(-size)로 검색

현재 디렉터리에서 크기가 5 이상인 파일들을 찾고 절대 경로명을 출력.

  - 파일 종류(-type)로 검색

   d : 디렉터리

   f : 일반 파일

   l : 심볼릭 링크

   b : 블록 장치 파일

   c : 문자 장치 파일

   s : 소켓 파일

 

 3) 검색 조건 조합

  - find 명령어는 여러 검색 옵션을 조합해서 사용할 수 있다.

  - 예

   $ find .. -type d -perm 700 -print

   $ find . -name core -size +2048 -ls

 

 

4) 검색된 파일 처리

  - find 명령어의 -exec 옵션

   : 검색한 모든 파일을 대상으로 동일 작업(명령어)을 수행

  - 예

   $ find . -name core -exec rm -i {}\;

 

2. 파일 필터링

 1) grep 명령어

  - 사용법

   $ grep 패턴 파일*

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

 

 2) grep 명령어의 옵션

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

 

 3) 정규식 (Regular Expression)

문자 의미
? 한 글자 혹은 없음을 의미한다. 'ab?'는 ab 혹은 ab 다음에 한 글자가 오는 문자열
. 임의의 한 문자를 의미한다. 'a...b'는 a로 시작해서 b로 끝나는 5글자 문자열
* 바로 앞의 것을 0번 이상 반복한다. 'a*b'는 b, ab, aab, aaab, ... 등의 문자열
[] [과 ] 사이의 문자 중 하나를 의미한다.
-기호 : 문자의 범위를 지정한다.
'[abc]d'는 ad, bc, cd를 뜻한다.
[a-z]는 a부터 z까지 중 하나
[^...] [^과 ] 사이의 문자를 제외한 나머지 문자 중 하나를 의미한다. '[^abc]d'는 ad, bd, cd는 포함하지 않고 ed, fd 등은 포함한다.
[^a-z]는 소문자가 아닌 모든 문자이다.
^.$ 각각 줄의 시작과 끝을 의미한다. '^문자열'은 문자열로 시작하는 줄을 나타낸다.
'문자열$'은 문자열로 끝나는 줄을 나타낸다.

 4) 파이프와 함께 grep 명령어 사용

  - 어떤 명령어를 실행하고 그 실행 결과 중에서 원하는 단어 혹은 문자열 패턴을 찾고자 할 떄 사용함.

3. 파일 정렬

 1) 정렬 : sort 명령어

  - 사용법

   $ sort [-옵션] 파일*

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

로 정렬된다.

 

  - 정렬 방법

   정렬 피드를 기준으로 줄 단위로 오름차순으로 정렬한다.

   기본적으로는 각 줄의 첫 번째 필드가 정렬 필드로 사용된다.

   -r 옵션을 사용하여 내림차순으로 정렬할 수 있다.

 2) 정렬 필드 지정

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

 

 3) sort 명령어의 옵션

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

  -o 출력파일 옵션

   정렬된 내용을 지정된 파일에 저장할 수 있다.

   $ sort -o sort.txt you.txt

 

  - n 옵션

   숫자 문자열의 경우에 숫자가 나타내는 값의 크기에 따라 비교하여 정렬할 수 있다.

   예 : "49"와 "100"

 

  - 필드 구분 문자 지정

 

4. 파일 비교

 1) 파일 비교 : cmp 명령어

  - 사용법

   $ cmp 파일1 파일2

   파일1과 파일2가 같은지 비교한다.

 

  - 출력

   두 파일이 같으면 아무것도 출력하지 않는다.

   두 파일이 서로 다르면 서로 달라지는 위치를 출력한다.

 

 2) 파일 비교 : diff

  - 사용법

   $ diff [-i] 파일1 파일2

   파일1과 파일2를 줄 단위로 비교하여 그 차이점을 출력한다.

   -i 옵션은 대소문자를 무시하여 비교한다.

 

  - 출력

   첫 번째 파일을 두 번째 파일 내용과 같도록 바꿀 수 있는 편집 명령어 형태

 

 3) 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. 기타 파일 조작

 1) 파일 나누기 : split

  - 사용법

   $ split [-l n] 입력파일 [출력파일]

   하나의 입력파일을 일정한 크기의 여러 개 작은 파일들로 분할한다.

   -l n 옵션을 이용하여 분할할 줄 수를 지정할 수 있다.

   1000줄씩 분할하여 xaa, xab, ...형태의 파일명으로 저장된다.

 

 

 2) 파일 합병

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

   $ cat 파일1 파일2 > 파일3

   파일1과 파일2의 내용을 붙여서 새로운 파일3을 만들어준다.

 

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

   $ paste [-s][-d구분문자]파일*

   여러 파일들을 병합하여 하나의 파일을 만들어 준다.

   -s : 한 파일 끝에 다른 파일 내용을 덧붙인다.

   -d구분문자 : 어떠한 문자로 열을 구분하는지 지정한다. 기본값은 탭 문자이다.

 

 

6. 명령어 스케줄링

 1) 주기적 실행 cron

  - cron 시스템

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

 

  - crontab 파일 등록법

   $ crontab 파일

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

 

  - crontab 파일

   7개의 필드(분 시 일 월 요일 [사용자] 명령)로 구성됨.

 

  - crontab 명령어

   $ crontab -l [사용자]

   사용자의 등록된 crontab 파일 리스트를 보여준다.

 

   $ crontab -e [사용자]

   사용자의 등록된 crontab 파일을 수정 혹은 생성한다.

 

   $ crontab -r [사용자]

   사용자의 등록된 crontab 파일을 삭제한다.

 

 2) 한 번 실행 at

  - at 명령어

   미래의 특정 시간에 지정한 명령어가 한 번 실행되도록 한다.

   실행할 명령은 표준 입력을 통해서 받는다.

 

  - 사용법

   $ at [-f 파일] 시간

   지정된 시간에 명령이 실행되도록 등록한다. 실행할 명령언 표준 입력으로 받는다.

   -f : 실행할 명령들을 파일로 작성해서 등록할 수도 있다.

 

  - atq 명령어

   at 시스템의 큐에 등록되어 있는 at 작업을 볼 수 있다.

   사용 예 : $ atq

 

  - at -r 옵션

   $ at -r 작업번호

   지정된 작업번호에 해당하는 작업을 제거한다.

   사용 예 : $ at -r 3

 

7. 디스크 및 아카이브

 1) tar 아카이브

  - 아카이브

   백업 또는 다른 장소로의 이동을 위해 여러 파일들을 하나로 묶어놓은 묶음

   아카이브를 만들거나 푸는데 tar(tape archive) 명령어 사용

  - tar 명령어

   옵션 : c(create), v(verbose), x(extract), t(table of contents), f(file)

 

   $ tar -cvg 타르파일 파일....

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

 

   $ tar -xvf 타르파일

   하나의 타르파일을 풀어서 원래 파일들을 복원한다.

 

   $ tar -tvf 타르파일

   타르파일의 내용을 확인한다.

 

8. 파일 압축

 1) 파일 압축 gzip

  - gzip 명령어

    $ gzip [옵션] 파일*

   파일(들)을 압축하여 .gz 파일을 만든다.

   -d : 압축을 해제한다.

   -l : 압축파일 안에 있는 파일 정보(압축된 크기, 압축률)를 출력한다.

   -r : 하위 디렉터리까지 모두 압축한다.

   -v : 압축하거나 풀 때 압축률, 파일명을 출력한다.

 

  - 압축 풀기

   $ gzip -d 파일.gz*

   gzip으로 압축된 파일들을 복원한다.

 

   $ gunzip 파일.gz*

   gzip으로 압축된 파일들을 복원한다.

 

  - 사용 방법

   파일들을 하나의 타르파일로 묶은 후 compress/gzip을 사용해 압축

   파일 복원 : 압축을 해제한 후, 타르파일을 풀어서 원래 파일들을 복원

   $ tar -cvf src.tar*

   $ gzip src.tar

 

   ... 이 파일을 원하는 곳으로 이동

   $ gzip -d src.tar.gz

   $ tar -xvf src.tar

 

 2) 파일 압축 compress

  - 명령어 compress / uncompress 명령어

   $ compress 파일*

   파일(들)을 압축하여 .Z 파일을 만든다.

 

   $ uncompress 파일.Z*

   압축된 파일(들)을 복원한다.

 

 2) RPM(Red Hat Package Manager)

  - RPM 패키지 매니저

   원래 레드햇에서 사용되었던 패키지 파일 및 관리 소프트웨어

   현재는 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

'Linux' 카테고리의 다른 글

리눅스 스터디 7주차  (0) 2021.01.01
리눅스 스터디 6주차  (0) 2020.12.31
리눅스 스터디 4주차  (0) 2020.10.09
리눅스 스터디 3주차  (0) 2020.09.28
리눅스 스터디 2주차  (0) 2020.09.20