최근 수정 시각 : 2024-04-01 16:02:17

Linux/명령어


파일:상위 문서 아이콘.svg   상위 문서: Linux
1. 개요2. 디렉토리/파일 관련
2.1. ls2.2. pwd2.3. cd2.4. mkdir2.5. rmdir2.6. rm2.7. ln2.8. touch2.9. cp2.10. mv2.11. cat2.12. chmod2.13. chown2.14. chgrp2.15. awk2.16. dd2.17. sed
3. 정보 표시 관련
3.1. history3.2. man page3.3. top 및 htop3.4. uname3.5. find3.6. who3.7. w3.8. ps3.9. pstree3.10. tee
4. 시스템 관리 관련
4.1. systemctl4.2. service4.3. visudo
5. sudo6. alias7. grep

[clearfix]

1. 개요

Linux UNIX 관련 명령어들을 정리한 문서이다.

2. 디렉토리/파일 관련

2.1. ls

파일:상세 내용 아이콘.svg   자세한 내용은 ls(UNIX) 문서
번 문단을
부분을
참고하십시오.
특정 디렉토리의 상세 내용을 출력한다.

2.2. pwd

현재 작업 중인 디렉토리의 경로를 출력한다.
Print Working Directory 를 의미한다.

2.3. cd

파일:상세 내용 아이콘.svg   자세한 내용은 CD(동음이의어) 문서
2.3번 문단을
부분을
참고하십시오.
디렉토리를 이동할 때 사용하는 명령어이다.

다른 대부분의 기본 명령어(예: 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 무슨 작업을 하는지 설명한다.
이 명령어를 활용한 rm -rf /라는 드립도 존재한다.

2.7. ln

링크 파일[2]을 생성하는 명령어이다.
ln <옵션> <원본 파일명> <생성될 링크의 파일명>
축약 전체 비고
-P --physical 하드 링크를 생성한다.
-f --force 생성할 때 그 이름으로 존재하는 링크파일을 없앤다.
-s --symbolic 심볼릭 링크를 생성한다.
-n --no-dereference 생성된 링크 파일을 일반 파일처럼 대한다.

2.8. touch

아무 것도 없는 빈 파일을 생성한다.
touch <생성할 파일명>

만약 이미 존재하는 파일에 touch 를 실행하면, 내용은 변경되지 않은 채, 파일의 최종 수정일을 현재로 바꾼다.

2.9. cp

파일:상세 내용 아이콘.svg   자세한 내용은 CP 문서
1번 문단을
부분을
참고하십시오.
CoPy의 약자로, 파일을 복사하는 데 사용한다.
cp <파일명> <파일을 복사할 해당 디렉토리>

2.10. mv

MoVe의 약자로, 파일을 옮기거나 파일명을 수정할 때 사용하는 명령어이다.
mv <파일명> <파일을 옮길 해당 디렉토리>
mv <수정 전 파일명> <수정 후 파일명>

2.11. cat

파일:상세 내용 아이콘.svg   자세한 내용은 cat(UNIX) 문서
번 문단을
부분을
참고하십시오.
파일의 내용을 화면에 텍스트로 출력해주는 용도의 명령어이다.

2.12. 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.13. chown

파일이나 디렉토리의 소유주를 변경하는 데 사용된다.
chown <사용자명> <파일이나 디렉토리명>

2.14. chgrp

파일이나 디렉토리의 소유 그룹을 변경하는 데 사용된다.
chgrp <그룹명> <파일이나 디렉토리명>

2.15. awk

파일:상세 내용 아이콘.svg   자세한 내용은 awk 문서
번 문단을
부분을
참고하십시오.
텍스트 처리를 위한 스크립트 언어.

2.16. dd

파일:상세 내용 아이콘.svg   자세한 내용은 디디 문서
9번 문단을
부분을
참고하십시오.
파일을 생성하거나, 드라이브 내용을 파일로 저장하거나 복사할 수 있는 명령어.

2.17. sed

파일:상세 내용 아이콘.svg   자세한 내용은 sed(UNIX) 문서
번 문단을
부분을
참고하십시오.
문자 스트림을 수정하고 편집해 내보낼 수 있는 명령어.

3. 정보 표시 관련

3.1. history

지금까지 사용했던 명령어 역사를 출력한다.

3.2. man page

파일:상세 내용 아이콘.svg   자세한 내용은 man page 문서
번 문단을
부분을
참고하십시오.
명령어에 대한 매뉴얼을 표시하는 명령어이다.

3.3. top 및 htop

top은 현재 실행되고 있는 프로세스에 관한 정보를 출력하는 명령어이다. 작업 관리자와 같은 개념이다.
htop은 top의 강화판이다.

위 형식으로 작성하여 사용한다.

3.4. uname

현재 사용하고 있는 운영체제에 관한 정보를 표시한다.
축약 전체 비고
-a --all 현재 시스템에 관한 모든 정보를 출력한다.
-s --kernel-name 커널의 이름을 출력한다.
-r --kernel-release 커널 릴리즈 정보를 출력한다.
-v --kernel-version 커널 버전 정보를 출력한다.
UNIX는 사용하는 배포판에 따라 다르게 출력되고, Linux에서는 Linux라고 출력되고, macOS에서는 macOS의 기반 운영체제인 Darwin이라고 출력된다.

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 기존에 있던 내용의 뒤에 덧붙인다.

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]

4.2. service

SysVInit을 사용하는 시스템에서 사용하는 명령어로, 서비스를 실행, 중지하거나 현재 상태를 표시할 수 있다.
명령 설명
service <서비스명> start 서비스 시작
service <서비스명> stop 서비스 중지
service <서비스명> restart 서비스 재시작
service <서비스명> reload 서비스 구성 파일 재로드
service <서비스명> status 서비스 상태 확인

4.3. visudo

sudo 명령어 설정 파일을 수정하는 명령어이다. 이 명령어를 사용하면 기본 에디터로 /etc/sudoers 파일이 열린다.

5. sudo

파일:상세 내용 아이콘.svg   자세한 내용은 sudo 문서
번 문단을
부분을
참고하십시오.
지정된 사용자에게 root 권한으로 명령어를 시행할 권한을 주는 명령어이다.

6. alias

특정 단어를 다른 명령어로 연결할 때 쓰는 명령어이다.[8]
alias <부르고 싶은 단어>='<실제 명령어>'

7. grep

파일:상세 내용 아이콘.svg   자세한 내용은 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 등의 파일에 명령어를 입력하면 된다.