Post

Linux Command Cheat Sheet

Linux를 사용하며 알게된 CLI 명령어들을 공유합니다.

파일 및 디렉토리 관리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 기본 파일 조작
ls                                                   # 현재 디렉토리 파일 목록
ls -la                                               # 숨김 파일 포함 상세 목록
ls -lh                                               # 파일 크기를 읽기 쉽게 표시
ls -lt                                               # 수정 시간순 정렬
ls -lS                                               # 파일 크기순 정렬
pwd                                                  # 현재 디렉토리 경로 출력
cd /path/to/directory                                # 디렉토리 이동
cd ~                                                 # 홈 디렉토리로 이동
cd -                                                 # 이전 디렉토리로 이동
mkdir directory_name                                 # 디렉토리 생성
mkdir -p /path/to/nested/directory                   # 중첩 디렉토리 생성
rmdir directory_name                                 # 빈 디렉토리 삭제
rm -rf directory_name                                # 디렉토리와 내용 모두 삭제

# 파일 복사, 이동, 삭제
cp file1 file2                                       # 파일 복사
cp -r dir1 dir2                                      # 디렉토리 재귀 복사
cp -p file1 file2                                    # 권한과 타임스탬프 유지하며 복사
mv file1 file2                                       # 파일 이동/이름 변경
rm file                                              # 파일 삭제
rm -f file                                           # 강제 삭제
rm -i file                                           # 삭제 전 확인

# 파일 링크
ln file hardlink                                     # 하드링크 생성
ln -s /path/to/file symlink                          # 심볼릭 링크 생성
readlink symlink                                     # 심볼릭 링크가 가리키는 경로 확인

파일 내용 확인 및 편집

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 파일 내용 보기
cat file                                             # 파일 전체 내용 출력
less file                                            # 페이지 단위로 파일 내용 보기
more file                                            # 페이지 단위로 파일 내용 보기
head file                                            # 파일 앞부분 10줄 출력
head -n 20 file                                      # 파일 앞부분 20줄 출력
tail file                                            # 파일 뒷부분 10줄 출력
tail -n 20 file                                      # 파일 뒷부분 20줄 출력
tail -f file                                         # 파일 실시간 모니터링

# 파일 편집
nano file                                            # nano 에디터로 파일 편집
vim file                                             # vim 에디터로 파일 편집
emacs file                                           # emacs 에디터로 파일 편집

# 파일 비교
diff file1 file2                                     # 두 파일 차이점 비교
diff -u file1 file2                                  # unified 형식으로 차이점 표시
cmp file1 file2                                      # 두 파일이 동일한지 확인

텍스트 처리 및 검색

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 텍스트 검색
grep "pattern" file                                  # 파일에서 패턴 검색
grep -i "pattern" file                               # 대소문자 구분 없이 검색
grep -r "pattern" directory                          # 디렉토리 내 재귀 검색
grep -n "pattern" file                               # 줄 번호와 함께 검색
grep -v "pattern" file                               # 패턴과 일치하지 않는 줄 출력
grep -c "pattern" file                               # 패턴 매칭 줄 수 카운트
grep -E "pattern1|pattern2" file                     # 확장 정규식 사용

# 텍스트 처리
sort file                                            # 파일 내용 정렬
sort -r file                                         # 역순 정렬
sort -n file                                         # 숫자 기준 정렬
sort -k 2 file                                       # 두 번째 필드 기준 정렬
uniq file                                            # 중복 줄 제거
uniq -c file                                         # 중복 줄 개수와 함께 출력
cut -d',' -f1,3 file                                 # CSV 파일에서 1,3번째 필드 추출
cut -c1-10 file                                      # 각 줄의 1-10번째 문자 추출
awk '{print $1}' file                                # 첫 번째 필드 출력
awk -F',' '{print $2}' file                          # 쉼표 구분자로 두 번째 필드 출력
sed 's/old/new/g' file                               # 문자열 치환
sed -i 's/old/new/g' file                            # 파일 내용 직접 수정

# 파이프와 리다이렉션
command1 | command2                                  # 파이프로 명령 연결
command > file                                       # 출력을 파일로 리다이렉션
command >> file                                      # 출력을 파일에 추가
command < file                                       # 파일을 입력으로 사용
command 2> error.log                                 # 에러를 파일로 리다이렉션
command &> output.log                                # 출력과 에러를 모두 파일로

파일 권한 및 소유권

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 권한 확인 및 변경
ls -l file                                           # 파일 권한 확인
chmod 755 file                                       # 8진수로 권한 설정
chmod u+x file                                       # 소유자에게 실행 권한 추가
chmod g-w file                                       # 그룹에서 쓰기 권한 제거
chmod o=r file                                       # 기타 사용자에게 읽기 권한만 부여
chmod -R 755 directory                               # 디렉토리와 하위 파일 권한 재귀 변경

# 소유권 변경
chown user file                                      # 파일 소유자 변경
chown user:group file                                # 파일 소유자와 그룹 변경
chown -R user:group directory                        # 디렉토리와 하위 파일 소유권 재귀 변경
chgrp group file                                     # 파일 그룹 변경

# 특수 권한
chmod +t directory                                   # sticky bit 설정
chmod g+s file                                       # setgid 설정
chmod u+s file                                       # setuid 설정

프로세스 관리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 프로세스 확인
ps                                                   # 현재 터미널의 프로세스 목록
ps aux                                               # 모든 프로세스 상세 정보
ps -ef                                               # 모든 프로세스 전체 형식
ps -u username                                       # 특정 사용자의 프로세스
pgrep process_name                                   # 프로세스 이름으로 PID 찾기
pidof process_name                                   # 프로세스 이름으로 PID 찾기
top                                                  # 실시간 프로세스 모니터링
htop                                                 # 향상된 프로세스 모니터링
jobs                                                 # 백그라운드 작업 목록

# 프로세스 제어
kill PID                                             # 프로세스 종료 (SIGTERM)
kill -9 PID                                          # 프로세스 강제 종료 (SIGKILL)
kill -HUP PID                                        # 프로세스에 HUP 시그널 전송
killall process_name                                 # 이름으로 프로세스 종료
pkill process_name                                   # 이름으로 프로세스 종료
nohup command &                                      # 터미널 종료 후에도 실행 유지
command &                                            # 백그라운드에서 명령 실행
fg %1                                                # 백그라운드 작업을 포그라운드로
bg %1                                                # 중단된 작업을 백그라운드로
Ctrl+Z                                               # 현재 프로세스 일시 중단
Ctrl+C                                               # 현재 프로세스 종료

시스템 정보 및 모니터링

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 시스템 정보
uname -a                                             # 시스템 전체 정보
uname -r                                             # 커널 버전
hostname                                             # 호스트명 확인
whoami                                               # 현재 사용자명
id                                                   # 사용자 ID 및 그룹 정보
w                                                    # 로그인한 사용자 정보
who                                                  # 로그인한 사용자 목록
last                                                 # 최근 로그인 기록
uptime                                               # 시스템 가동 시간 및 부하
date                                                 # 현재 날짜와 시간
cal                                                  # 달력 출력

# 하드웨어 정보
lscpu                                                # CPU 정보
lsblk                                                # 블록 디바이스 정보
lsusb                                                # USB 디바이스 정보
lspci                                                # PCI 디바이스 정보
dmidecode                                            # 하드웨어 상세 정보
free -h                                              # 메모리 사용량 (읽기 쉬운 형식)
df -h                                                # 디스크 사용량 (읽기 쉬운 형식)
du -h directory                                      # 디렉토리 크기
du -sh *                                             # 현재 디렉토리 내 각 항목 크기

# 네트워크 정보
ifconfig                                             # 네트워크 인터페이스 정보
ip addr show                                         # IP 주소 정보
ip route show                                        # 라우팅 테이블
netstat -tuln                                        # 네트워크 연결 상태
ss -tuln                                             # 소켓 통계 (netstat 대체)
ping host                                            # 호스트 연결 테스트
traceroute host                                      # 네트워크 경로 추적
wget url                                             # 파일 다운로드
curl url                                             # HTTP 요청

압축 및 아카이브

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# tar 아카이브
tar -cvf archive.tar files                           # tar 아카이브 생성
tar -xvf archive.tar                                 # tar 아카이브 추출
tar -tvf archive.tar                                 # tar 아카이브 내용 확인
tar -czvf archive.tar.gz files                       # gzip 압축과 함께 아카이브
tar -xzvf archive.tar.gz                             # gzip 압축 아카이브 추출
tar -cjvf archive.tar.bz2 files                      # bzip2 압축과 함께 아카이브
tar -xjvf archive.tar.bz2                            # bzip2 압축 아카이브 추출

# 압축
gzip file                                            # gzip 압축
gunzip file.gz                                       # gzip 압축 해제
zip archive.zip files                                # zip 압축
unzip archive.zip                                    # zip 압축 해제

환경 변수 및 셸 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 환경 변수
env                                                  # 모든 환경 변수 출력
echo $PATH                                           # PATH 환경 변수 출력
export VAR=value                                     # 환경 변수 설정
unset VAR                                            # 환경 변수 제거
which command                                        # 명령어 위치 찾기
type command                                         # 명령어 타입 확인
whereis command                                      # 명령어 관련 파일 위치

# 셸 히스토리
history                                              # 명령어 히스토리
history | grep pattern                               # 히스토리에서 패턴 검색
!!                                                   # 마지막 명령어 재실행
!n                                                   # n번째 명령어 실행
!pattern                                             # 패턴으로 시작하는 마지막 명령어 실행

# 별칭
alias ll='ls -la'                                    # 별칭 설정
alias                                                # 모든 별칭 확인
unalias ll                                           # 별칭 제거

사용자 및 그룹 관리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 사용자 관리
sudo useradd username                                # 사용자 추가
sudo userdel username                                # 사용자 삭제
sudo usermod -aG group username                      # 사용자를 그룹에 추가
passwd                                               # 비밀번호 변경
sudo passwd username                                 # 다른 사용자 비밀번호 변경
su username                                          # 사용자 전환
sudo command                                         # 관리자 권한으로 명령 실행

# 그룹 관리
groups                                               # 현재 사용자의 그룹 확인
groups username                                      # 특정 사용자의 그룹 확인
sudo groupadd groupname                              # 그룹 추가
sudo groupdel groupname                              # 그룹 삭제

시스템 서비스 관리 (systemd)

1
2
3
4
5
6
7
8
9
10
11
12
13
# 서비스 관리
sudo systemctl start service                         # 서비스 시작
sudo systemctl stop service                          # 서비스 중지
sudo systemctl restart service                       # 서비스 재시작
sudo systemctl reload service                        # 서비스 설정 다시 로드
sudo systemctl enable service                        # 부팅 시 자동 시작 설정
sudo systemctl disable service                       # 부팅 시 자동 시작 해제
systemctl status service                             # 서비스 상태 확인
systemctl is-active service                          # 서비스 활성 상태 확인
systemctl is-enabled service                         # 서비스 자동 시작 설정 확인
systemctl list-units --type=service                  # 모든 서비스 목록
journalctl -u service                                # 서비스 로그 확인
journalctl -f -u service                             # 서비스 로그 실시간 확인

패키지 관리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Ubuntu/Debian (apt)
sudo apt update                                      # 패키지 목록 업데이트
sudo apt upgrade                                     # 패키지 업그레이드
sudo apt install package                             # 패키지 설치
sudo apt remove package                              # 패키지 제거
sudo apt purge package                               # 패키지와 설정 파일 완전 제거
sudo apt autoremove                                  # 불필요한 패키지 자동 제거
apt search package                                   # 패키지 검색
apt show package                                     # 패키지 정보 확인

# CentOS/RHEL (yum/dnf)
sudo yum update                                      # 패키지 업데이트
sudo yum install package                             # 패키지 설치
sudo yum remove package                              # 패키지 제거
yum search package                                   # 패키지 검색
yum info package                                     # 패키지 정보 확인

로그 관리

1
2
3
4
5
6
7
8
9
10
# 시스템 로그
sudo tail -f /var/log/syslog                         # 시스템 로그 실시간 확인
sudo tail -f /var/log/auth.log                       # 인증 로그 확인
sudo tail -f /var/log/kern.log                       # 커널 로그 확인
journalctl                                           # systemd 저널 확인
journalctl -f                                        # systemd 저널 실시간 확인
journalctl --since "1 hour ago"                      # 1시간 전부터 로그
journalctl --until "2023-01-01"                      # 특정 날짜까지 로그
dmesg                                                # 커널 메시지 확인
dmesg | tail                                         # 최근 커널 메시지

네트워크 도구

1
2
3
4
5
6
7
8
9
10
11
12
13
# 연결 테스트
ping -c 4 host                                       # 4번 ping 테스트
traceroute host                                      # 경로 추적
nslookup domain                                      # DNS 조회
dig domain                                           # DNS 상세 조회
host domain                                          # 간단한 DNS 조회

# 네트워크 연결
ssh user@host                                        # SSH 연결
scp file user@host:/path                             # SCP 파일 전송
rsync -av source/ destination/                       # rsync 동기화
wget -O file url                                     # 파일 다운로드
curl -o file url                                     # 파일 다운로드

유용한 단축키 및 팁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 터미널 단축키
Ctrl+A                                               # 줄 시작으로 이동
Ctrl+E                                               # 줄 끝으로 이동
Ctrl+U                                               # 커서 앞 모든 텍스트 삭제
Ctrl+K                                               # 커서 뒤 모든 텍스트 삭제
Ctrl+W                                               # 커서 앞 단어 삭제
Ctrl+L                                               # 화면 지우기 (clear와 동일)
Ctrl+R                                               # 히스토리 검색
Tab                                                  # 자동 완성
Tab Tab                                              # 가능한 완성 목록 표시

# 유용한 조합
find /path -name "*.txt" -exec grep -l "pattern" {} \;  # 패턴을 포함한 파일 찾기
ps aux | grep process_name                           # 특정 프로세스 찾기
df -h | grep -v tmpfs                                # tmpfs 제외한 디스크 사용량
netstat -tuln | grep :80                             # 80번 포트 사용 확인
history | grep command                               # 히스토리에서 명령어 검색

궁금하신 점이나 추가해야 할 부분은 댓글이나 아래의 링크를 통해 문의해주세요.
Written with KKam._.Ji

This post is licensed under CC BY 4.0 by the author.