자주 사용하는 리눅스 명령어 정리



※ Unix의 루트 디렉토리 아래에 있는 몇가지 특수 디렉토리

   1. /usr : 시스템 사용시 고정된 공유파일을 포함

   2. /bin : 명령어를 실행할 수 있는 파일을 가진 디렉토리

   3. /dev : 프린터, 모니터 등 입출력 장치파일들이 있는 디렉토리

   4. /etc : 시스템에서 사용되는 관리파일을 가짐

   5. /tmp : 임시파일을 만들기 위해 사용되는 파일

   6. /sbin : 관리자만이 쓰는 파일



♣ 메타문자 사용

  ▶ * : 0개 이상의 문자

  ▶ ? : 1개의 문자

  ▶ [ ] : 괄호 안의 어떤 한 문자 혹은 괄호 안의 범위의 문자

  ▶ [! ] : 괄호 안의 문자들과 대응하지 않는 것

  ▶ \* : 메티문자를 일반문자로 바꿀 경우 사용(\)



♣ Unix의 간단한 명령어

  ▶ ; : 한줄에 두 개 이상의 명령어 실행 (ex. $ cal;date)

  ▶ | : 동시수행 (ex. ls | more)



■■ a ■■

adduser : 루트로 로그인해서 이용자를 추가

   ● $ adduser -p wef21 -g aaa -s '/bin/bash' -d '/home/test01' user

▶ awk : 파일의 선택필드를 자름 (-F패턴 : 구분자를 써줌, 패턴을 생략하면 모든 라인에서 동작)

   ● $ awk -F: '$3>=1000 {print $1,$3}' passwd : passwd파일에서 UID가 1000보다 큰 유저명과 UID 출력

     $ ls -l | awk '{print $9,$5}' : 현재 디렉토리에서 파일명과 파일사이즈를 출력


■■ c ■■

cat : 파일의 내용을 출력

   ● $ cat -n test.log : test.log파일을 행 번호를 붙여서 보여줌

▶ chmod : 파일 및 디렉토리 사용권환 변경

   ● $ chmod 755 test : test 파일(디렉토리)의 권한을 rwxr-xr-x로 변경

▶ cp : 파일 복사

   ● $ cp ./test/text.txt . : test/text.txt파일을 현재 디렉토리로 복사

     $ cp -r test test01 : test디렉토리에 있는 모든 파일(서브 디렉토리의 모든 파일포함)을 test01로 복사


■■ d ■■

date : 현재 날짜를 보여줌

   ● $ date


■■ f ■■

▶ file : 파일 유형 출력

   ● $ file aaa.tar : aaa.tar: POSIX tar archive (GNU)

find : 주어진 파일명과 동일한 파일을 찾고, 그 경로를 출력

  ◈type : d-디렉토리, f-일반파일

  ◈user : 지정한 사용자 ID가 찾은 사용자 ID와 일치되면 출력

  ◈size : 파일 크기가 일치되면 출력(1블록 = 512byte)

    +2 : 파일의 크기가 1024byte 이상인 파일을 찾음

    -2 : 파일의 크기가 1024byte 미만인 파일을 찾음

  ◈mtime : 지정한 시간에 변경된 파일을 찾음

    +n : 지금으로부터 n일 이전에 수정된 파일

    -n : 지금시각으로부터 최근 n일 동안 수정된 파일

  ◈exec : 명령어를 실행, 인수는 {}로 표시, 명령어 끝은 항상 \;로 끝남


   ● $ find / -name test01 : 최상위 디렉토리부터 검색하여 파일명이 test01인 파일을 출력

     $ find . -name test01 : 현재 디렉토리부터 검색하여 파일명이 test01인 파일을 출력

     $ find ~ -name test01 : 홈 디렉토리부터 검색하여 파일명이 test01인 파일을 출력

     $ find . -mtime -10 exec rm {} \; : 10일 이내에 수정한 파일을 검색하여 삭제

     $ find . -type f -a -mtime -1 -exec cp {} ./back \; : 현재 디렉토리로부터 일반파일이고 최근 하루동안 수정한 파일을 back디렉토리로 복사

     $ find . -type d -exec chmod 777 {} \; : 현재 디렉토리로부터 파일형식이 디렉토리(폴더)인 파일의 권한을 777(rxwrxwrxw)로 변경

finger : who 명령어를 보충하는 명령어, 특정 사용자에 대한 정보 출력

   ● $ finger
▶ free : 메모리의 사용상태와 남은 상태, 버퍼의 상태등을 보여줌
   ● $ free


■■ g ■■

▶ grep : 파일 중에서 어떤한 패턴을 검색 (grep 문장 파일명)

   ● $ grep -n single test.txt : test.txt파일에서 "single"과 매치되는 라인을 출력

     $ grep -v single test.txt : test.txt파일에서 "single"과 매치되지 않는 라인을 출력

     $ grep -n single /home -R : home 폴더 및 하위에 있는 모든 파일에서 "single"과 매치되는 라인을 출력

     $ grep -l single /etc : etc 폴더 및 하위에 있는 모든 파일에서 "single"과 매치되는 라인이 있는 파일명 출력

     $ grep -i single test.txt : test.txt파일에서 대소문자 구분없이 "single"과 매치되는 라인을 출력

     $ grep ^soon passwd : passwd파일에서 soon으로 시작하는 라인을 찾음

     $ grep bash$ passwd : passwd파일에서 bash로 끝나는 라인을 찾음

     $ grep -n 1-5-1[0-9] passwd : passwd파일에서 (1-5-10 ~ 1-5-19)의 문자열이 들어가는 라인을 라인번호와 같이 출력

     $ ls -l | grep ^- : 현재폴더에서 일반파일 찾음
▶ gzip : 파일 압축/해제 (파일명.gz으로 압축됨, 디렉토리파일은 압축이 안됨)
   ● $ gzip aaa.tar : aaa.tar파일을 aaa.tar.gz으로 압축
     $ gzip -d aaa.tar.gz : aaa.tar.gz압축 파일의 압축해제

■■ h ■■

▶ help : help 명령어

   $ mkdir --help : mkdir명령어에 대한 help를 보여줌


■■ i ■■

▶ id : 사용자의 로그인명, ID, 그룹 ID 등을 출력

   ● $ id


■■ k ■■

▶ kill : 실행되고 있는 프로세서 ID를 입력해서 프로세서를 종료

   ● $ kill -9 2341 : 2341의 pid를 가진 프로세서를 강제 kill


■■ l ■■

▶ ln : 파일 연결 (-s는 Symbolic Link, -s옵션이 없으면 Hard Link)

   ● $ ln -s test test101 : test(원본)를 test101(공유)와 심볼릭(-s) 링크

     $ ln -s back bbbb

         drwxr-xr-x+ 1 snoopy None     0 Jan  9 17:08 back

         lrwxrwxrwx  1 snoopy None     4 Jan  9 17:10 bbbb -> back

▶ ls : 디렉토리와 파일의 정보를 출력

   ● $ ls -al : 모든 파일에 대한 파일의 정보를 출력
     $ ls -t : 최종 수정된 시간별로 정렬하여 출력

     $ ls -F : 파일의 특성을 출력


■■ m ■■

▶ mkdir : 디렉토리를 만듦

   ● $ mkdir -p ./test/test01 : 부모디렉토리까지 한번에 만듦

▶ mv : 파일 이름 변경 및 이동

   ● $ mv test1 test2 : test1의 이름을 test2로 변경

     $ mv -i : 이미 존재하는 파일을 덮어 쓸 것인지를 물어봄


■■ n ■■

▶ nohup : 로그아웃 후에도 백그라운드 명령을 계속 실행(결과는 nohup.out에 저장)

   ● $ nohup ls -l : ls -l 명령어를 백그라운드로 실행 (ls -l의 결과는 nohup.out에 저장되어 있음)


■■ p ■■

▶ ps : 프로세서에 관한 리스트를 보여

   ● $ ps -e : 현재 시스템 내에 실행 중인 프로세스에 관련된 정보를 출력

     $ ps -f : 프로세서에 대한 모든 정보를 출력

▶ pwd : (print working directory) 현재 작업 directory를 출력

   ● $ pwd

■■ r ■■

▶ rm : (remove) 파일을 제거(한번 삭제된 파일은 다시 복구 할 수 없음)

   ● $ rm -f test1 : 권한이 없는 파일이라도 강제로 지움

     $ rm -r test1 : 서브디렉토리를 포함한 모든 내용을 지움

     $ rm -i test1 : 각 파일에 대하여 지울 것인지 물어 봄

▶ rmdir : (remove directory) 디렉토리를 삭제(디렉토리에 파일이 존재할 경우 삭제할 수 없음) => rm -rf 사용

   ● $ rmdir test1 : 해당 디렉토리를 삭제


■■ s ■■

▶ su : 사용중에 다른 ID로 재접속하는 명령어

   ● $ su user01 : user01로 접속 (사용자ID 없이 su만 입력하면 root로 접속)


■■ t ■■

▶ tail : 파일의 마지막 n개의 내용을 보고자 할 때 사용

   ● $ tail -f test.log : test.log파일의 최근 변경된 내용을 출력

▶ tar : 파일 묶음/해제

   ● $ tar -cvf back.tar . : 현재 폴더의 모든 파일을 back.tar로 묶음

     $ tar -cvf home.tar /home : home 디렉토리를 home.tar로 묶음
     $ tar -xvf back.tar : back.tar파일의 묶음을 해제

     $ tar -tvf aaa.tar : aaa.tar파일의 묶음을 해제하지 않고 안의 내용을 출력

▶ touch : 파일의 최종 시간을 변경/파일 크기가 0인 빈파일 생성
   ● $ touch test : test파일의 최종 시간을 현재시간으로 변경
     $ touch aaa : 사이즈가 0인 aaa파일(일반파일)을 생성


■■ w ■■

▶ wc : 파일내의 정보 출력 / 명령문의 개수 출력

   ● $ wc -l test.txt : test.txt파일내의 라인수 출력

     $ wc -w test.txt : test.txt파일내의 단어수 출력

     $ wc -c test.txt : test.txt파일내의 문자수 출력

▶ who : 시스템에 로그인된 사용자를 보여줌

   ● $ who

▶ whoami : 사용자의 ID를 출력

   ● $ whoami


■■ 기타 ■■

▶ > : 출력 재지정(저장)

   ● $ ls -l > t.file : ls -l의 결과를 t.file로 저장

     $ ls -l > /dev/null : ls -l의 결과를 버림

▶ < : 입력 재지정(입력)

   ● $ cat < test/test.txt : test/test.txt파일로 부터 입력받아 cat 실행



■■■■ 연습문제 ■■■■
1. 홈 디렉토리 이하에 생성된 모든 디렉토리의 개수를 출력하시오.
  ==>> $ find ~ -type d | wc -l

2. 홈 디렉토리 이하에 있는 디렉토리의 권한을 700로 변경하시오
  ==>> $ find ~ -type d -exec chmod 700 {} \;

3. etc 밑의 일반파일에서 unix라는 문자열이 포함된 파일명을 출력하시오.
  ==>> $ find /etc -type f -exec grep -l 'unix' {} \;


+ Recent posts