UNIX 외워둬야 할 명령어들 총정리

2019. 12. 8. 11:54coding

Directory


cd [directory]

  • 디렉토리 변경
  • 경로명을 입력하지 않으면 home 디렉토리로 간다.

ls [options] [directory or file]

  • 디렉토리의 내용이나 파일 권한을 보여줌
  • -a (all) : hidden 파일의 목록 (.으로 시작되는 파일 목록) 도 보여줌
  • -i (inode) : 각 디렉토리와 파일의 inode 정보를 보여준다.
  • -l (long) : 긴 형식으로 파일의 정보를 보여줌 (File mode, Link count, Username, Groupname, bytes, last modified)
    • Filetype : -(정규), d(디렉토리), c(문자), b(블록), l(소프트링크), p(FIFO), s(소켓)
    • 접근권한 (-rw-r—r—...등)
    • Links : 디렉토리나 파일에 연결된 (linked) 파일 수
    • 소유자, 그룹, 파일크기(byte), 최종수정날짜, 파일이름
  • -f (format) : 긴 디렉토리는 /를, 실행 파일은 *를, 심볼릭 링크된 파일은 | 를 붙여서 보여준다.
  • -d (working directory) : 지정한 디렉토리 자체에 대한 정보를 보여준다.
  • -R (recursive) : 하위 디렉토리의 목록도 보여준다.
  • -n : user/group id's
  • -r : reverse order
  • -t : time sequence
  • -u : time sequence - last access
  • -c : time sequence - inode date
  • -p : identify directories
  • -1 : print one column
  • -x : 복수 열로 출력
  • a*? -F? -ld?

mkdir [options] directory

  • 디렉토리 생성

pwd

  • 작업 디렉토리 출력 (print working directory) : 현재 디렉토리의 절대경로명 출력

rmdir directory

  • 디렉토리 삭제
  • rmdir command cannot delete a directory unless it is empty

File


chgrp [options] group file

  • 파일의 소유 그룹 변경
  • chgrp newgroup filename → 사용자 그룹을 newgroup으로 변경

chmod [options] file

  • 파일이나 디렉토리의 접근 권한 변경
  • 권한 수정은 소유자나 superuser만 가능
  • 파일이 삭제되거나 내용이 변경되지 않도록 하려면 디렉토리와 파일에 쓰기 권한을 주지 않아야 한다.
  • [options] : [who[operator]permission][..] → 이때 operator는 -,+,=
  • chmod g=rw,o= file1 → group에 대한 권한은 rw로 하고 other는 권한이 없는 것으로 한다.
  • chmod u+x,g-w,o+rwx file1 → user에게는 x권한 추가하고, group에게는 w권한 삭제, other에게는 rwx권한 부여
  • 수치 표현 지원 (read:4, write:2, excute:1) → 따라서 rwx는 7, rw는 6, r은 4
  • chmod 777 file1 → u,g,o에게 모두 rwx 권한 부여

chown [options] owner[:group] file

  • 파일의 소유자 변경, super 유저가 사용.
  • 파일의 소유자가 바뀌게 되면 새로운 소유자나 super user만 mode 변경 가능
  • owner:group 을 이용하면 owner와 group을 동시에 변경할 수 있다.
  • chown user2 /home/user2/file → 소유자가 user2로 변경

cp [options] file1 file2

  • file1을 file2로 복사, file2가 존재하면 덮어씀
  • 경로만 지정하면 동일한 파일명으로 복사
  • 경로와 함께 다른 파일명을 붙여주면 다른 파일명으로 복사
  • -i : target file이 존재할 경우, 덮어쓸 것인지 물어본다 (interactive)
  • -r : 하위 디렉토리까지 복사 (recursive)
  • cp f1 f1.copy → f1.copy 라는 파일이 현재 디렉토리에 생성
  • cp -r /usr/* /home → /usr 밑의 모든 파일이 home 디렉토리에 복사
  • cp f1 memo/f1.copy → memo 디렉토리에 f1.copy 파일 생성
  • -p : preserve access time and permissions
  • 성공적인 파일 복사를 위한 규칙 (source → destination)
    • The source must exist
    • destination path default 는 현 디렉토리
    • destination이 존재하지 않으면 새로 생성, 존재하면 대치
    • source 가 multiple or dir → destination은 디렉토리여야 함
    • destination 이 source 와 같은 디렉토리이면 destination 파일 이름은 달라야 함
  • cp file1 file2 → working directory 에 file1과 같은 file2가 생성
  • cp DirA/file1 DirB → DirA에 있는 file1이 file1 이름으로 DirB에 생성
  • cp -r DirC DirD → DirC 밑의 모든 디렉토리와 파일이 DirD에 복사

mv [options] file1 file2

  • file1을 file2로 이동
  • source 파일의 디렉토리와 target 파일의 디렉토리가 일치하면 파일의 이름을 바꿔준다.
  • -i : target 파일이 이미 존재할 때, 덮어쓸 지 물어본다.
  • -f : force

rm [options] file

  • 파일이나 디렉토리 삭제, -r은 디렉토리와 그 내용도 삭제
  • 옵션을 주지 않으면 삭제시 물어보지 않고 지운다.
  • -i : 정말 지울 것인지 물어본다.
  • -r : 서브 디렉토리도 삭제한다 (recursive)
  • -f : force
  • The rm command does not delete a file → instead it unlinks it meaning the data is still on disk but the link to it is removed
  • Depending on the filesystem you are using it is more less difficult to recover files removed with rm

ln [options] source target

  • source 에 대한 링크 target 생성 (To share a single file with multiple users, a link can be used)
  • A reference to a file stored elsewhere on the system → A way to establish a connection to a file to be shared
  • 링크란 여러개의 파일이 하나의 데이터를 참조하도록 하는 것이며, 데이터만 참조하므로 디스크의 공간을 효율적으로 사용할 수 있다.
  • 하드 링크 : 일반 파일을 링크할 때 주로 이용, 옵션 없이 ln 명령으로 링크한다. 생성된 링크 파일은 원래 파일의 inode (index node - 파일에 대한 정보가 저장된 레코드)를 그대로 참조하기에 원 파일이 지워져도 아무런 문제가 되지 않는다.
  • 심볼릭 링크 : 주로 디렉토리를 링크할 때 사용한다. ln -s 명령으로 링크시키며, 생성된 링크 파일은 원래의 파일명을 참조하게 된다. 원 파일이 삭제되면 inode도 삭제되어 심볼릭 링크 파일이 의미가 없어진다.
  • cp 명령은 별도의 데이터 블럭을 생성하지만 ln 링크 파일은 데이터 블럭을 별도로 생성하지 않는다. 따라서 공유할 필요가 있는 파일을 링크하거나 절대경로가 긴 디렉토리를 간편한 이름으로 참조할 경우 링크를 사용하게 된다.
  • -i : interactive
  • -f : force

umask [mode]

  • 새롭게 생성될 파일의 사용 권한을 설정하게 해준다. (기존 파일에는 영향 없음)
  • 777에서 원하는 사용 권한을 뺀 값으로 설정한다.
  • 새롭게 만들어질 파일의 사용 권한을 r—r—r—(444)로 설정하려면 $ umask 333 → 원래의 default값으로 변경하려면 $ umask 000

split -n filename1 filename2

  • 큰 텍스트 파일을 n라인수로 잘라 filename2 뒤에 aa부터 zz까지 순차적으로 파일을 생성
  • split -10 /etc/passwd pass → ls pass*를 하면 passaa passab passac... 이렇게 확인

cut [option] filename

  • 특정 형식의 파일에서 원하는 칼럼 및 필드를 추출
  • cut -c1-8 who.txt > longname.txt → who.txt의 1-8칼럼(c)까지 잘라서 longname.txt로 저장한다.
  • cut -d: -f1 /etc/passwd > name.passwd → /etc/passwd 파일에서 필드 구분자 (d)를 : 로 하고 첫번째 필드(f)를 추출하여 name.passwd로 저장한다.
  • cat /etc/passwd | grep unix | cut -d: -f1,3 > passwd.unix → /etc/passwd 에서 unix라는 단어가 들어가는 라인을 추출하고 그 라인에서 필드 구분자를 : 으로 하여 첫번째 필드와 세번째 필드를 추출하여 passwd.unix 라는 파일로 저장한다.

paste -dx filelist

  • 여러개의 파일을 조합하여 레코드 형식으로 보여준다. (x는 구분자)
  • paste -d: a b c > abc → 필드 구분자를 : 로 하여 파일 a,b,c 의 내용을 파일 abc로 만든다.

wc [option] filename

  • 파일 내의 단어 수, 라인 수, 문자 수에 대한 정보
  • 옵션 없이 명령하면 -l(line), -w(word), -c(character) 순서대로 출력
  • ls /etc | wc -l → /etc 내의 파일 개수

grep [option] "pattern" [file]

  • 주어진 문자열로 하나 이상의 파일 내용을 라인 단위로 검색한다.
  • -i : 대소문자를 구별하지 않는다.
  • -n : pattern을 포함하고 있는 라인을 라인 번호와 함께 보여준다.
  • -v : pattern이 들어있지 않은 줄들을 보여준다.
  • ps -ef | grep unix | grep sh → ps 명령에 의해 전체 프로세스 목록 중에서 unix가 있는 라인을 추출하고 그 결과에서 sh를 포함하고 있는 라인을 추출하여 출력한다.

bc

  • 계산기

Display Commands


cat [options] file

  • 파일을 concatenate (파일내용 보기 / 파일 결합하기)
  • 파일은 절대경로 또는 상대경로로 지정할 수 있다.
  • -v : 파일에 포함되어 있는 제어 문자도 보여준다.
  • -e : 각 라인의 끝을 $로 보여준다. (반드시 -v와 함께 사용한다.)
  • -t : 탭 문자를 ^i 로 보여준다.
  • -vet : 화면상에 표시 불가능한 문자들을 보여준다.

cal [month[year]]

  • 그냥 cal → 현재 달의 달력이 출력, cal 2019 → 해당 년도의 전체 달력이 출력

echo [text string]

  • 문자열을 stdout 으로 echo
  • echo 'date' 는 date라는 문자가 출력, echodate(틱) 은 date 로 출력되는 값이 출력 (날짜와 시간이 출력)
  • echo 'hello' 와 echo hello 는 동일하게 출력된다.

head [-number] file

  • 파일의 처음 10줄을 출력
  • head -15 /etc/profile → 15줄을 출력

finger [username]

  • 사용자에 대한 정보를 출력
  • finger → 사용자 목록과 정보 출력, finger user → user에 대한 정보 출력

tail [options] file1

  • 파일의 마지막 몇 라인을 출력

more [options] file1

  • 파일을 페이지 기반으로 탐색 (cat 은 한꺼번에 출력)

less [options] file1

  • 파일을 페이지 기반으로 탐색
  • space bar → 다음 화면 보기, return → 한 라인 더보기
  • q → 종료, b → 한 화면 앞으로 가기, /word → word 검색

man [keyword]

  • 명령어의 사용법 (manual)을 보여줌
  • spacebar → 다음페이지, return key → 다음 라인, q → 종

sleep time

  • time(초) 단위로 잠시 프로세스를 멈춘다.
  • sleep 10 ; cal 1997 → 10초 동안 멈춘 후 cal 1997을 실행한다.

System Resource Commands


whereis [options] command

  • command 라는 이름을 가진 실행, 소스, 매뉴얼 페이지 위치에 대한 정보 출력

which command

  • 명령어나 alias 의 경로정보 출력
  • which는 실행할 수 있는 명령(유틸리티) 의 경로를 출력 /bin/..
  • whereis 는 유틸리티의 경로를 출력 /usr/bin ...등

who [am i]

  • 누가 로그인을 했고, 어떤 프로세스가 수행중인지 정보 출력
  • 시스템에 로그인한 사용자와 단말기 포트, 로그인 시간 등 출력
  • who am i → 현재 사용자 본인의 로그인 이름
  • whoami → 시스템이 로컬단말기 포트와 연관시킨 사용자이름

chsh username login_shell

  • 사용자의 로그인 쉘 변경

date [options]

  • 현재 날짜와 시간 출력

df [options] [resource]

  • 디스크 블록과 inode 정보 출력

du [options] [dir or file]

  • 사용중인 디스크 공간의 양 출력

hostname

  • 현재 시스템의 이름 출력

kill [options] [-SIGNAL] [pid#] [%job]

  • (pid#)를 가진 프로세스나 (%n) 정보를 가진 프로세스에게 시그널을 보냄. 디폴트 시그널은 kill

ps [options]

  • 실행중인 프로세스의 상태 보여줌

script file

  • exit 이 실행될 때 까지 화면에 나타나는 모든 것을 file에 기록

uname [option]

  • 현재 사용중인 unix 시스템에 대한 정보를 알려준다 (unix name)
  • unix 이름, 버전, 현재 사용중인 하드웨어 이름, host 이름 등 출력
  • -a : 모든 정보 다 출력

stty [argument]

  • 현재 표준 입력 장치에 대한 터미널 입출력 옵션 보거나 설정 (set tty)
  • stty erase ^h → 명령어 입력시 한글자를 지울때 ctrl + h를 사용하도록 설정함
  • stty -echo → 입력되는 문자가 화면에 나타나지 않게 한다.
  • stty echo → 입력되는 문자가 화면에 나타나게 한다.

Working with Files


cmp [options] file1 file2

  • 두개의 파일 비교, 다른 부분 출력 (text, binary files)

diff [options] file1 file2

  • 두개의 파일 비교, 다른 부분 출력 (text only)

file [options] file

  • 파일의 타입 출력

find dir [options] [actions]

  • 타입이나 조건에 맞는 파일 검색
  • -name filename : 파일 이름으로 찾는다.
  • -atime +n : access time 이 n일 이전인 파일을 찾는다.
  • -atime -n : access time 이 n일 이내인 파일을 찾는다.
  • -mtime +n : n일 이전에 변경된 파일을 찾는다.
  • -mtime -n : n일 이내에 변경된 파일을 찾는다.
  • -perm nnn : 파일 권한이 nnn인 파일을 찾는다.
  • -type x : 파일 타입이 x인 파일들을 찾는다.
  • -size n : 사이즈가 n 이상인 파일들을 찾는다.
  • -user username : username 으로 찾는다.
  • -print : 찾은 파일의 절대 경로명을 화면에 출력한다.

sort [options] [field number] file1 ..

  • 선택된 옵션에 따라 파일의 내용 정렬
  • -n : 숫자 값을 기준으로 파일을 정렬한다 (number)
  • -r : 정렬 순서를 역으로 한다 (-d : 사전순으로 한다)
  • -tx : 필드 구분자를 x로 한다 (treatment)
  • -f : 대소문자 구분 없이 정렬한다.
  • sort -nt: -k3 < /etc/passwd → /etc/passwd 파일을 : 을 필드 구분자로 하고 세번째 필드를 기준으로 하여 숫자 기준으로 정리하여 보여준다.
    • : 0개 이상의 문자들과 대체
  • [] : [] 안의 한 문자와 대치 ([ab]cd → acd나 bcd를 검색)
  • ^/$ : 라인의 처음이나 끝만 검색하게 함
  • . : 한 문자와 대치 (b.t 면 가운데 하나의 문자가 어느것이어도 됨을 의미)

uniq [options] file1

  • 파일에서 중복된 내용 제거하여 중복된 라인은 한줄만 출력
  • 파일 내에서 서로 떨어져 있는 중복 라인을 검색하려면 sort로 정렬하여 검사해야 한다.
  • -d : 중복된 라인만 출력

File Archiving, Compression


compress / Uncompress [options] file[.Z]

  • 파일 압축 또는 풀기, 압축 파일 확장자는 .Z
  • 압축된 파일의 내용을 보려면 zcat이라는 명령어를 사용한다.

gzip / unzip [options] file[.gz]

  • 파일 압축 또는 풀기, 압축 파일 확장자는 .gz

od [options] file

  • 이진 파일의 dump

tar -key [f device_file] [files...]

  • 파일 백업 및 복원하기 (tape archive and restore)
  • 특정 디렉토리 아래의 모든 파일을 하나로 묶어주거나 테이프로 백업해주기도 하고, 기록된 파일을 디스크로 복원한다.
  • -c : 새로운 tar 파일을 만든다 (create)
  • -x : tar 파일에서 추출한다 (extract)
  • -t : tar 파일에 기록된 파일의 목록을 출력시킨다 (title)
  • -v : 백업하거나 복원할 때 파일 이름을 화면에 보여준다 (verify)
  • -cvf : 디스크의 파일을 테이프로 백업
  • -tvf : 테이프에 기록된 파일의 목록을 출력
  • -xvf : 테이프에 백업된 파일들을 디스크로 재저장