리눅스(Linux) 터미널 및 Bash 환경에서 자주 사용되는 필수 명령어와 옵션, 실무 활용 예시를 카테고리별로 정리한 문서입니다.


1. 파일 및 디렉토리 관리

디렉토리 이동 및 위치 확인

  • pwd (Print Working Directory): 현재 위치한 디렉토리의 절대 경로 출력
    pwd
    
  • cd (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.txt
    
  • cp (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/syslog
    
  • head: 파일의 상단 일부 출력
    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 확인
    uptime
    
  • systemctl: 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.8
    
  • netstat / 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.zip
    
  • ssh: 원격 서버 접속
    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.gz
    
  • zip / 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/bin
    
  • history: 실행했던 명령어 히스토리 조회
    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 및 로봇/소프트웨어 개발 환경에서 일상적으로 사용되는 핵심 커맨드입니다. 필요할 때 시트처럼 빠르게 참고하세요!