Linux 유틸리티에 대해 알아보자

유틸리티

찾기

find

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

ex) $ find ~ -name *.c -print, $ find /usr -name "*.c" -print print는 기본옵션으로 생략 가능하다.

여러 검색 옵션이 있는데 그 중 파일의 접근권한 검색 (-perm), 파일의 접근 시간(-atime), 수정 시간(-mtime)으로 검색이 가능하다. 이때 atime과 mtime에 n을 적어 +|-로 기준 시간 이전, 이내로 검색이 가능하다.

또한, 파일의 소유자, 소유그룹, 크기, 종류로도 검색이 가능하며, 이러한 조건들을 조합하여 사용도 가능하다.

마지막으로 검색된 파일을 처리할 수 있다. -exec 옵션으로 통해서 검색한 모든 파일을 대상으로 동일한 작업(명령어)을 수행한다.

grep

grep 패턴 파일* : 파링들을 대사응로 지정된 패턴의 문자열을 검색하고, 해당 문자열을 포함하는 줄들을 출력한다.

옵션은 다음과 같다.

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

grep도 옵션들을 조합하여 여러가지 옵션을 중복해서 사용할 수 있다.

정규식 (regular expression)

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

압축 : tar and compressions

Tar Archive

  • Archive

    • 백업 또는 다른 장소로의 이동을 위해 여러 파일들을 하나로 묶어놓은 묶음
    • 아카이브를 만들거나 푸는데 tar(tape archive) 사용
    • Tar: 이름에서 알 수 있듯, 전통적으로 Archive를 만드는데 사용.
      • Tar 로 생성된 archive 는 .tar 확장자를 가지며, tar file 혹은 tarball 이라고 표현하기도 함
  • tar의 동작

    • 단순히 여러 파일의 데이터를 하나의 파일로 묶고,
    • 다시 여러 파일로 복원할 수 있도록 함
    • 파일의 용량은 원본보다 더 큼 (복원을 위해 기존 파일들의 이름, 크기, 권한 등 필요한 정보를 포함하기 때문)
    • 기본적으로 압축 (Compression)을 수행하지 않음. Archive 와 compression 은 별개
  • 명령어

    • 옵션: c(create), v(verbose), x(extract), t(table of contents), f(file)
    • $ tar -cvf 타르파일 파일+ : 여러 파일들을 하나의 타르파일로 묶는다. 확장자 .tar 사용
    • $ tar -xvf 타르파일 : 하나의 타르파일을 풀어서 원래 파일들을 복원한다.
    • $ tar -tvf 타르파일 : 타르파일의 내용을 확인한다.

gzip

  • 리눅스 환경에서 많이 사용하는 압축 프로그램
  • 속도가 빠르고 적당한 수준의 압축률을 제공함
  • 명령어 : gzip [옵션] 파일* : 파일들을 압축하여 .gz 파일로 만든다.

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

외에 bzip2, xz도 유사하게 사용하면 된다. bzip2와 xz가 압축률이 높으나, 그만큼 속도가 느리다.

Tar file 생성시 gzip 사용

  • Tar의 Compression options
    • Tar 파일을 생성하거나 해제할 시, 동시에 압축 또는 복원을 수행함
    • -z : gzip 이용
    • -j : bzip2 이용 (소문자 j)
    • -J : xz 이용 (대문자 J)
  • ex) 압축
    • $ tar -czvf textfiles.tar.gz *.txt
    • $ tar -cJf textfiles.tar.xz *.txt
  • ex) 복원
    • $ tar -xzvf textfiles.tar.gz
    • $ tar -xJf textfiles.tar.xz

기타

파일 비교

  • cmp 명령어 :

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

    • $ diff [-i] 파일1 파일2 : 파일1과 파일2를 줄 단위로 비교하여 그 차이점을 출력한다. -i 옵션은 대소문자 무시
    • 첫 번째 파일을 두 번째 파일 내용과 같도록 바꿀 수 있는 편집 명령어 형태
    • 추가(a) : 첫 번째 파일의 줄 n1 이후에 두 번째 파일의 n3부터 n4까지의 줄들을 추가하면 두 파일은 서로 같다.
    • 삭제(d) : 첫 번째 파일의 n1부터 n2까지의 줄들을 삭제하면 두 번째 파일의 줄 n3 이후와 서로 같다
    • 변경(c) : 첫 번째 파일의 n1 부터 n2까지의 줄들을 두 번째 파일의 n3 부터 n4까지의 줄들로 대치하면 두 파일은 서로 같다.
      • n1, n2 c n3, n4
      < 첫 번째 파일의 대치될 줄들
          --
      > 두 번째 파일의 대치할 줄들
      

패키지 설치

리눅스에서 추가 프로그램을 설치하는 세 가지 방법

  • 소스 코드를 다운로드 받아 직접 컴파일하고 설치함
    • 장점: 필요한 경우, 직접 수정하여 사용 가능
    • 단점: 빌드 환경을 구성해야 하는 등, 과정이 복잡함
  • 패키지를 다운로드 받아 설치함
    • 장점: 컴파일 완료된 패키지 파일을 다운받아 설치함
    • 단점: 다른 패키지와의 의존성 문제를 직접 해결해야 함 (ex A 설치를 위해, B가 필요한데, B는 설치되어 있지 않음)
  • 패키지 관리 프로그램 사용
    • 패키지 명을 지정하면, 자동으로 패키지를 검색해 다운받고, 설치함

    • 장점: 패키지 다운로드도 의존성 문제 등을 자동으로 해결해줌

    • 단점: Customizing , 버전 관리 등이 다소 불편함

    • 여러 배포본에 따라 서로 다른 패키지 관리 프로그램을 제공

      • Debian 계열 (Ubuntu, Debian, : apt (or apt-get)
        • 패키지 형태: dpkg
      • Redhat 계열 (CentOS, Fedora,RHEL): yum
        • 패키지 형태: rpm
    • apt

      • 기존 apt-get 보다 사용자 편의적인 high-level package management system
      • 사용법: # apt [command] [package name]
      • Commands
        • install: 패키지 설치
        • autoremove: 패키지 자동 제거
        • update: 패키지 정보를 최신으로 업데이트함.
        • upgrade: 최신 버전으로 업데이트 가능한 모든 패키지를 설치함
        • search: 패키지 정보 검색
        • list: 사용 가능한 패키지 리스트 출력. 이미 설치된 경우, [installed] 로 표시됨.

디스크 사용

  • df 명령어 : 파일 시스템에 대한 정보를 출력한다.

    • $ df 파일시스템* : 파일 시스템의 사용중이거나 사용 가능한 디스크 공간에 대한 정보를 보여준다.
  • du 명령어 :

    • $ du [-s] 파일* : 파일이나 디렉토리가 사용하는 디스크 사용량(블록 수)을 알려준다.
    • 파일을 명시하지 않으면 현재 디렉터리의 사용 공간을 보여준다.
    • 기본으로 -ahd 1 모든 파일, 단위 포함, 한 레벨 아래 하위 디렉토리

IP주소

  • $ ip addr : 사용중인 시스템의 IP 주소를 출력한다.
  • $ ifconfig : Network Interface 에 대한 configuration 을 수행함
    • 단순히 ip addr 과 같이 네트워크 정보를 확인하기 위해서도 많이 사용함

별명

  • alias 명령어 :
    • $ alias 이름=문자열 : 문자열이 나타내는 기존 명령에 대해 새로운 이름을 별명으로 정의

히스토리

  • history :
    • $ history [-rh] [번호] : 입력된 명령들을 기억하는 기능
    • $ HISTSIZE=100 : 기억할 히스토리 사이즈
    • $ HISTFIESIZE=100 : 로그아웃 후에도 히스토리가 저장되도록 설정

재실행

  • !! : 바로 전 명령 재실행
  • !n : 이벤트 번호가 n인 명령 재실행
  • ! : 시작스트링 시작스트링으로 시작하는 최후 명령 재실행
  • !? : 서브스트링 서브스트링을 포함하는 최후 명령 재실행

댓글