상위 문서: Linux
1. 개요2. 디렉토리/파일 관련
2.1. ls2.2. pwd2.3. cd2.4. mkdir2.5. rmdir2.6. rm2.7. shred2.8. ln2.9. touch2.10. cp2.11. mv2.12. cat2.13. chmod2.14. chown2.15. chgrp2.16. awk2.17. dd2.18. sed
3. 정보 표시 관련3.1. history3.2. man page3.3. top 및 htop3.4. uname3.5. find3.6. who3.7. w3.8. ps3.9. pstree3.10. tee3.11. stat3.12. df
4. 시스템 관리 관련5. sudo6. alias7. grep[clearfix]
1. 개요
Linux 및 UNIX 관련 명령어들을 정리한 문서이다.2. 디렉토리/파일 관련
2.1. ls
자세한 내용은 ls(UNIX) 문서 참고하십시오.특정 디렉토리의 상세 내용을 출력한다.
2.2. pwd
현재 작업 중인 디렉토리의 경로를 출력한다.Print Working Directory 를 의미한다.
2.3. cd
자세한 내용은 CD(동음이의어) 문서 참고하십시오.디렉토리를 이동할 때 사용하는 명령어이다.
다른 대부분의 기본 명령어(예: ls, mv, cp, rm, mkdir 등)들은 모두 별도의 실행 파일이 /bin 디렉토리 밑에 존재한다.[1] 하지만, cd 는 셸 자체 명령어이기에 /bin/cd 라는 파일은 존재하지 않는다.
2.4. mkdir
MaKeDIRectory의 약자로, 디렉토리를 생성할 때 사용하는 명령어이다.mkdir <만들 디렉토리 이름>
2.5. rmdir
ReMoveDIRectory의 약자로, 빈 디렉토리를 삭제할 때 사용한다.2.6. rm
ReMove의 약자로 파일이나 디렉토리를 삭제할 때 사용한다.rm <옵션> <삭제할 파일명>
옵션 | 설명 |
-f, --force | 강제로 삭제한다. |
-r, -R, --recursive | 재귀적으로 디렉토리와 내부 컨텐츠를 삭제한다. |
-d, --dir | 빈 디렉토리를 삭제한다. |
--one-file-system | 어떤 디렉토리를 삭제할 때, 그 디렉토리의 파일시스템과 다른 파일시스템이 특정 디렉토리로 마운트 되어있으면 그 디렉토리의 내부 컨텐츠는 삭제하지 않는다. |
-v, --verbose | 무슨 작업을 하는지 설명한다. |
2.7. shred
위 rm 명령과 달리 대상파일에 임의의 데이터를 덮어쓰기하여 복구를 힘들게 하는 명령이다.shred \[옵션\] <대상파일 \[대상파일 2\]...>
옵션 | 설명 |
-f, --force | 필요시 권한을 변경하여 덮어쓰기할 수 있도록 한다. |
-n, --iterations=N | N만큼 파일 내용을 재작성한다. (기본값: 3) |
--random-source=FILE | 제공한 FILE 내 임의의 바이트를 사용한다. |
-u, --remove | 덮어쓰기 후 대상 파일을 잘라서 제거한다. |
-v, --verbose | 무슨 작업을 하는지 설명한다. |
-z, --zero | 마지막에 0을 덮어쓰기하여 단편화된 파일을 숨긴다. |
-s, --size=N | N 바이트 만큼 파쇄를 시도한다. (K, M, G 단위 입력 가능) |
2.8. ln
링크 파일[2]을 생성하는 명령어이다.ln <옵션> <원본 파일명> <생성될 링크의 파일명>
축약 | 전체 | 비고 |
-P | --physical | 하드 링크를 생성한다. |
-f | --force | 생성할 때 그 이름으로 존재하는 링크파일을 없앤다. |
-s | --symbolic | 심볼릭 링크를 생성한다. |
-n | --no-dereference | 생성된 링크 파일을 일반 파일처럼 대한다. |
2.9. touch
아무 것도 없는 빈 파일을 생성한다.touch <생성할 파일명>
만약 이미 존재하는 파일에 touch 를 실행하면, 내용은 변경되지 않은 채, 파일의 최종 수정일을 현재로 바꾼다.
2.10. cp
자세한 내용은 CP 문서 참고하십시오.CoPy의 약자로, 파일을 복사하는 데 사용한다.
cp <파일명> <파일을 복사할 해당 디렉토리>
2.11. mv
MoVe의 약자로, 파일을 옮기거나 파일명을 수정할 때 사용하는 명령어이다.mv <파일명> <파일을 옮길 해당 디렉토리>
mv <수정 전 파일명> <수정 후 파일명>
2.12. cat
자세한 내용은 cat(UNIX) 문서 참고하십시오.파일의 내용을 화면에 텍스트로 출력해주는 용도의 명령어이다.
2.13. chmod
파일이나 디렉토리의 권한을 변경할 때 사용한다. ls에 -l을 붙여 명령어를 실행시키면 왼쪽에-rwxr-xr--
이런 식으로 뜨는데, 여기서 맨 왼쪽의 -
는 파일의 형식을 나타내고,[3] r은 읽기(Read), w는 쓰기(Write), x는 실행(eXecute)를 의미한다.[4]읽기는 4의 값을 가지고, 쓰기는 2, 실행은 1의 값을 가진다. 그래서 rw-의 값을 만들려면 4+2를 하여 6, r-x는 5, rwx는 7의 값을 가진다. 그래서 어떤 파일이나 디렉토리의 권한을 모두 읽고 쓰게 만들려면
chmod 777 <파일 또는 디렉터리명>
-v | 진단 메시지 출력 |
-f | 에러 메시지를 출력하지 않는다. |
-R | 하위 디렉터리와 파일에도 적용 |
2.14. chown
파일이나 디렉토리의 소유주를 변경하는 데 사용된다.chown <사용자명> <파일이나 디렉토리명>
2.15. chgrp
파일이나 디렉토리의 소유 그룹을 변경하는 데 사용된다.chgrp <그룹명> <파일이나 디렉토리명>
2.16. awk
자세한 내용은 awk 문서 참고하십시오.텍스트 처리를 위한 스크립트 언어.
2.17. dd
자세한 내용은 디디 문서 참고하십시오.파일을 생성하거나, 드라이브 내용을 파일로 저장하거나 복사할 수 있는 명령어.
2.18. sed
자세한 내용은 sed(UNIX) 문서 참고하십시오.문자 스트림을 수정하고 편집해 내보낼 수 있는 명령어.
3. 정보 표시 관련
3.1. history
지금까지 사용했던 명령어 역사를 출력한다.3.2. man page
자세한 내용은 man page 문서 참고하십시오.명령어에 대한 매뉴얼을 표시하는 명령어이다.
3.3. top 및 htop
top은 현재 실행되고 있는 프로세스에 관한 정보를 출력하는 명령어이다. 작업 관리자와 같은 개념이다.htop은 top의 강화판이다.
위 형식으로 작성하여 사용한다.
3.4. uname
현재 사용하고 있는 운영체제에 관한 정보를 표시한다.축약 | 전체 | 비고 |
-a | --all | 현재 시스템에 관한 모든 정보를 출력한다. |
-s | --kernel-name | 커널의 이름을 출력한다. |
-r | --kernel-release | 커널 릴리즈 정보를 출력한다. |
-v | --kernel-version | 커널 버전 정보를 출력한다. |
3.5. find
파일을 찾는 명령어이다.find <파일을 찾을 디렉토리> <옵션>
옵션 | 설명 |
-name <파일명> | 파일명으로 찾는다. |
-executable | 실행 가능한 파일을 찾는다. |
-ctime <시간> | <시간>일 전에 변경된 파일을 찾는다. |
-empty | 빈 파일을 찾는다. |
-amin <시간> | <시간>분 전에 접근된 파일을 찾는다. |
-cmin <시간> | <시간>분 전에 변경된 파일을 찾는다. |
-perm <권한> | <권한> 권한을 가진 파일을 찾는다. |
-readable | 현재 사용자가 읽기 권한이 있는 파일을 찾는다. |
-type <b,c,d,p,f,l,s> | 파일 종류로 찾는다. b는 블럭 디바이스, c는 캐릭터 디바이스, d는 디렉토리, f는 일반 파일, l은 링크, s는 소켓이다. |
-uid <사용자 아이디> | 해당 사용자 아이디가 소유한 파일을 찾는다. |
3.6. who
현재 로그인된 사용자의 정보를 출력한다.3.7. w
현재 로그인된 사용자가 실행 중인 작업을 볼 수 있다.3.8. ps
현재 실행중인 프로세스를 보여준다.옵션 | 설명 |
-A , -e | 모든 프로세스를 보여준다. |
-a | 세션 리더[5]와 백그라운드 프로세스를 제외한 모든 프로세스를 보여준다. |
-d | 세션 리더를 제외한 프로세스를 보여준다. |
-N, --deselect | 이 옵션을 넣으면 넣은 옵션의 반대조건을 만족하는 프로세스를 보여준다. |
T | 현재 터미널과 연관된 프로세스를 보여준다. |
r | 실제로 작동중인[6] 프로세스만 보여준다. |
--pid, -p, p <프로세스 아이디> | 해당 프로세스 아이디의 프로세스를 보여준다. |
--ppid <프로세스 아이디> | 선택된 프로세스 아이디와 그 프로세스의 부모 프로세스를 보여준다. |
-g, -G, --Group, --group <그룹 아이디> | 해당 그룹 아이디의 프로세스를 보여준다. |
-s, --sid <세션 아이디> | 해당 세션 아이디의 프로세스를 보여준다. |
-t, --tty, t <터미널 이름> | 해당 터미널에서 작동중인 프로세스를 보여준다. |
-U, -u, --User, --user <사용자 이름, 아이디> | 해당 사용자의 실행중인 프로세스를 보여준다. |
3.9. pstree
현재 실행하고 있는 프로세스를 트리 형식으로 보여준다.3.10. tee
화면에 출력한 내용을 그대로 파일로 저장하는 명령어.<명령어> | tee <저장하고 싶은 파일명>
옵션 | 설명 |
-a | 기존에 있던 내용의 뒤에 덧붙인다. |
3.11. stat
특정 파일의 상세 정보를 출력한다.stat \[옵션\] <대상 파일 \[대상 파일2\]...>
파일 크기, 타입, i-node, 접근 권한 등 해당 파일에 관련된 여러 정보를 나열한다. 3.12. df
마운트된 디스크 사용량을 출력한다.df \[옵션\] \[파일\]
옵션 | 설명 |
-i, --inodes | i-node 사용량을 대신 표시한다. |
-h, --human-readable | 읽기 쉽도록 1,024를 거듭제곱한 단위를 사용한다. (예시: 1023M) |
-H, --si | 읽기 쉽도록 1,000을 거듭제곱한 단위를 사용한다. (예시: 1.1G) |
4. 시스템 관리 관련
4.1. systemctl
SYSTEM ConTroL의 약자이다.systemd를 사용하고 있는 시스템에서 사용할 수 있는 명령어로, 데몬 서비스의 실행, 중지와 상태확인, 그 외에도 시스템의 상태를 변경하는 등 여러가지 기능을 할 수 있다.
명령 | 설명 |
systemctl start <서비스명> | 서비스 시작 |
systemctl stop <서비스명> | 서비스 중지 |
systemctl restart <서비스명> | 서비스 재시작 |
systemctl enable <서비스명> | 서비스 활성화 |
systemctl disable <서비스명> | 서비스 비활성화 |
systemctl status <서비스명> | 서비스 상태 확인 |
systemctl edit <서비스명> | 서비스 편집 |
systemctl list-unit-files <서비스명> | 서비스 유닛파일 표시 |
systemctl daemon-reload | systemd 관리자 구성 재로드 |
systemctl reboot | 시스템 재시작 |
systemctl poweroff | 시스템 종료 |
systemctl set-default <타겟 이름> | 시스템 기본 타겟 또는 기본 런레벨 변경[7] |
systemctl isolate <타겟 이름> | 시스템 타겟 또는 런레벨 변경 |
4.2. service
SysVInit을 사용하는 시스템에서 사용하는 명령어로, 서비스를 실행, 중지하거나 현재 상태를 표시할 수 있다.명령 | 설명 |
service <서비스명> start | 서비스 시작 |
service <서비스명> stop | 서비스 중지 |
service <서비스명> restart | 서비스 재시작 |
service <서비스명> reload | 서비스 구성 파일 재로드 |
service <서비스명> status | 서비스 상태 확인 |
4.3. visudo
sudo 명령어 설정 파일을 수정하는 명령어이다. 이 명령어를 사용하면 기본 에디터로 /etc/sudoers 파일이 열린다.5. sudo
자세한 내용은 sudo 문서 참고하십시오.지정된 사용자에게 root 권한으로 명령어를 시행할 권한을 주는 명령어이다.
6. alias
특정 단어를 다른 명령어로 연결할 때 쓰는 명령어이다.[8]alias <부르고 싶은 단어>='<실제 명령어>'
7. grep
자세한 내용은 grep 문서 참고하십시오.정규표현식을 사용해 주어진 패턴을 검색하는 명령어이다.
[1] 시스템 관리를 위한 명령어는 /sbin 디렉토리 밑에 존재한다.[2] 특정 파일이나 폴더에 대한 바로가기를 만드는 것이라고 생각하면 쉽다.[3] d라고 되어있으면 디렉토리, 아무런 알파벳도 없으면 일반 파일, l이면 링크파일, c라고 되어있으면 장치 파일이라는 뜻이다.[4] 왼쪽에서 부터 소유자, 소유자가 속한 그룹, 다른 사용자 이런 순서대로 되어 있다. 그래서 예를 들어
-rwxr------
라고 되어 있으면, 소유한 사용자는 읽기, 쓰기, 실행 권한이 있고, 사용자가 속한 그룹의 사용자들은 읽을 권한만 있으며, 나머지 사용자들은 아무런 권한도 없는 것이다.[5] 대개 /sbin/init[6] 일시정지된 프로세스 제외[7] 타겟은 시스템을 특정 상태로 바꾸기 위해서 시작해야 하는 유닛의 집합이다. graphical.target은 GUI 지원 멀티유저 모드, multi-user.target은 텍스트 기반 멀티유저 모드, rescue.target은 네트워킹 없이 단일유저 모드로 변경한다. 이 외에도 여러가지 타겟이 있고, 직접 만들 수도 있다.[8] 만약 sudo systemctl stop example.service같이 긴 명령어를 자주 쳐야 하는데 너무 길다면 그것을 examplestop같이 바꿀수 있는 것이다. 이 경우에서는 alias examplestop='sudo systemctl stop example service'라고 입력하면 된다. 참고로 이는 현 세션에서만 유효하기에 계속 사용하기 위해선 .bashrc, .zshrc 등의 파일에 명령어를 입력하면 된다.