리눅스(Linux) 터미널 및 Bash 환경에서 자주 사용되는 필수 명령어와 옵션, 실무 활용 예시를 카테고리별로 정리한 문서입니다.
1. 파일 및 디렉토리 관리
디렉토리 이동 및 위치 확인
pwd(Print Working Directory): 현재 위치한 디렉토리의 절대 경로 출력pwdcd(Change Directory): 디렉토리 이동cd /var/log # 특정 경로로 이동 cd ~ # 홈 디렉토리로 이동 cd .. # 상위 디렉토리로 이동 cd - # 이전 작업 디렉토리로 이동
파일 및 디렉토리 목록 조회
ls(List): 파일 및 디렉토리 목록 출력ls -l # 상세 정보(권한, 소유자, 크기, 수정일 등) 포함 출력 ls -a # 숨김 파일(.)을 포함한 모든 파일 출력 ls -lh # 파일 크기를 사람이 읽기 쉬운 단위(KB, MB, GB)로 출력 ls -lt # 수정 시간순(최신순) 정렬 출력
디렉토리 및 파일 생성 / 삭제 / 복사 / 이동
mkdir(Make Directory): 디렉토리 생성mkdir my_dir mkdir -p path/to/deep/dir # 하위 디렉토리까지 한 번에 생성touch: 빈 파일 생성 또는 기존 파일의 수정 시간 업데이트touch test.txtcp(Copy): 파일 및 디렉토리 복사cp file1.txt file2.txt # 파일 복사 cp -r dir1 dir2 # 디렉토리 전체 복사 (재귀적)mv(Move): 파일/디렉토리 이동 또는 이름 변경mv old_name.txt new_name.txt # 이름 변경 mv file.txt /path/to/target/ # 이동rm(Remove): 파일 및 디렉토리 삭제rm file.txt # 파일 삭제 rm -r dir_name # 디렉토리 및 하위 내용 삭제 rm -rf dir_name # 경고 없이 강제 삭제 (주의!)
탐색 및 용량 확인
find: 지정한 조건으로 파일 탐색find . -name "*.log" # 현재 디렉토리에서 .log 파일 탐색 find /var/log -type f -mtime -7 # 최근 7일 이내 수정된 일반 파일 탐색 find . -type f -size +100M # 100MB 이상 크기의 파일 탐색df(Disk Free): 전체 디스크 공간 사용량 확인df -h # 사람이 읽기 쉬운 형식(GB, MB 등)으로 디스크 용량 확인du(Disk Usage): 디렉토리별 용량 확인du -sh * # 현재 디렉토리 하위 항목들의 용량 요약 출력 du -sh /var/log # 특정 디렉토리의 전체 용량 출력
2. 파일 내용 조회 및 편집
파일 내용 읽기
cat(Concatenate): 파일 내용 전체 출력cat filename.txt cat -n filename.txt # 줄 번호와 함께 출력less: 대용량 파일 내용을 페이지 단위로 조회 (q로 종료,/keyword로 검색)less /var/log/sysloghead: 파일의 상단 일부 출력head -n 20 filename.txt # 상단 20줄 출력tail: 파일의 하단 일부 출력 (로그 모니터링에 매우 유용)tail -n 50 filename.txt # 하단 50줄 출력 tail -f /var/log/syslog # 실시간으로 추기되는 로그 모니터링
3. 텍스트 검색 및 데이터 처리
텍스트 검색
grep(Global Regular Expression Print): 패턴 검색grep "ERROR" app.log # app.log에서 ERROR 문자열 포함 라인 검색 grep -i "error" app.log # 대소문자 구분 없이 검색 grep -rn "ERROR" ./src # 하위 디렉토리까지 재귀 검색(-r) 및 줄 번호 표시(-n) grep -v "INFO" app.log # INFO가 포함되지 않은 라인만 출력 (반전)
리다이렉션 & 파이프라인
|(Pipe): 앞 명령어의 표준 출력을 뒤 명령어의 표준 입력으로 전달ps aux | grep python>&>>(Redirection): 파일에 결과 저장/추가echo "Hello World" > output.txt # 덮어쓰기 (Overwriting) echo "New Line" >> output.txt # 이어쓰기 (Appending)
고급 텍스트 처리
awk: 필드 단위 데이터 추출 및 텍스트 처리ls -l | awk '{print $5, $9}' # 파일 크기($5)와 파일명($9)만 출력sed: 스트림 에디터 (문자열 치환 등)sed 's/foo/bar/g' input.txt # foo를 bar로 치환하여 출력 sed -i 's/foo/bar/g' input.txt # 파일 내용을 직접 치환하여 수정wc(Word Count): 줄, 단어, 바이트 수 카운트wc -l filename.txt # 전체 줄 수 출력sort&uniq: 정렬 및 중복 제거sort data.txt | uniq -c # 정렬 후 각 라인별 등장 횟수 카운트
4. 프로세스 및 시스템 모니터링
프로세스 확인 및 관리
ps(Process Status): 실행 중인 프로세스 조회ps aux # 시스템 전체 프로세스 상세 목록 조회 ps -ef | grep java # 특정 프로세스(java) 검색top/htop: 실시간 시스템 자원(CPU, 메모리) 및 프로세스 상태 모니터링top # 기본 리눅스 성능 모니터링툴 htop # 컬러 UI 지원 향상된 모니터링툴 (설치 필요: apt install htop)kill/killall: 프로세스 종료kill <PID> # 일반 종료 요청 (SIGTERM) kill -9 <PID> # 강제 종료 (SIGKILL) killall nginx # 지정한 이름의 모든 프로세스 종료
시스템 상태 및 서비스 관리
free: 시스템 메모리(RAM, Swap) 사용량 확인free -h # 읽기 쉬운 단위(MB, GB)로 표시uptime: 시스템 가동 시간 및 Load Average 확인uptimesystemctl: systemd 서비스 관리sudo systemctl status nginx # 서비스 상태 확인 sudo systemctl start nginx # 서비스 시작 sudo systemctl stop nginx # 서비스 중지 sudo systemctl restart nginx # 서비스 재시작 sudo systemctl enable nginx # 부팅 시 자동 시작 설정
5. 권한 및 소유권 관리
chmod(Change Mode): 파일/디렉토리 접근 권한 변경chmod 755 script.sh # 소유자: 읽기/쓰기/실행(7), 그룹: 읽기/실행(5), 기타: 읽기/실행(5) chmod +x script.sh # 실행 권한 부여 chmod -R 644 /path/to/dir # 하위 항목 전체 권한 변경chown(Change Owner): 파일/디렉터리의 소유자 및 그룹 변경sudo chown ubuntu:ubuntu file.txt # 소유자 및 그룹 변경 sudo chown -R ubuntu:ubuntu /var/www # 하위 항목 전체 소유자 변경sudo(Superuser Do): 관리자(root) 권한으로 명령어 실행sudo apt update
6. 네트워크 및 데이터 전송
네트워크 확인
ping: 네트워크 연결 상태 확인ping 8.8.8.8netstat/ss: 네트워크 포트 및 소켓 상태 확인ss -tuln # 열려있는 TCP/UDP 포트 목록 조회 sudo ss -tulpn | grep 8080 # 8080 포트를 사용하는 프로세스 확인ip/ifconfig: 네트워크 인터페이스 IP 확인ip a # IP 주소 및 네트워크 인터페이스 정보 확인
파일 다운로드 및 전송
curl: HTTP/HTTPS 요청 보내기 및 데이터 수신curl -I https://example.com # 응답 헤더 확인 curl -O https://example.com/file.zip # 파일 다운로드wget: 웹에서 파일 다운로드wget https://example.com/file.zipssh: 원격 서버 접속ssh user@remote_ip ssh -i key.pem user@remote_ip # SSH 키 파일로 접속scp&rsync: 원격 파일 복사 및 동기화scp file.txt user@remote_ip:/path/to/target/ # SCP로 파일 전송 rsync -avz ./src/ user@remote_ip:/path/to/target/ # rsync로 증분 동기화
7. 압축 및 아카이브
tar: 파일 묶기 및 압축# tar.gz 압축하기 tar -czvf archive.tar.gz /path/to/dir # tar.gz 압축 해제하기 tar -xzvf archive.tar.gzzip/unzip: ZIP 압축 및 해제zip -r archive.zip /path/to/dir unzip archive.zip
8. 유용한 Bash 팁 및 단축키
단축어 (Alias) & 환경 변수
alias: 자주 쓰는 긴 명령어를 짧은 별칭으로 등록alias ll='ls -alF'export: 환경 변수 설정export PATH=$PATH:/custom/binhistory: 실행했던 명령어 히스토리 조회history | grep docker # 이전에 실행한 docker 관련 명령어 검색
백그라운드 실행
&: 명령어를 백그라운드에서 실행python3 app.py &nohup: 터미널이 종료되어도 프로세스가 지속되도록 실행nohup python3 app.py > app.log 2>&1 &
주요 터미널 단축키
| 단축키 | 기능 설명 |
|---|---|
Ctrl + C | 현재 실행 중인 프로세스 즉시 중단 |
Ctrl + Z | 현재 실행 중인 프로세스 일시 정지 (배경 전환) |
Ctrl + R | 과거 명령 히스토리 실시간 역검색 |
Ctrl + L | 터미널 화면 깨끗하게 지우기 (clear 동일) |
Ctrl + A | 커서를 줄의 맨 앞(시작)으로 이동 |
Ctrl + E | 커서를 줄의 맨 뒤(끝)으로 이동 |
Tab | 파일명/경로/명령어 자동 완성 |
마무리
위 명령어들은 리눅스 시스템 관리, 서버 운영, DevOps 및 로봇/소프트웨어 개발 환경에서 일상적으로 사용되는 핵심 커맨드입니다. 필요할 때 시트처럼 빠르게 참고하세요!