본문 바로가기

데이터 사이언스 공부

1-1. 리눅스 명령어 모음 Linux commands

리눅스는 IT 개발자에게 필수적인 도구로, 명령어를 잘 이해하고 활용하는 것이 중요하다.

리눅스에서 알아두면 좋을 기본 명령어들을 소개한다.

 

셸 환경

  • history: 셸에서 실행한 명령어의 이력을 보여준다.
    • 예: history
    • 결과: 최근에 실행한 명령어 목록이 출력된다.
  • man: 프로그램의 매뉴얼 페이지를 출력하여, 더 상세한 정보를 제공한다.
    • 예: man history
    • 결과: history 명령어의 매뉴얼 페이지가 표시된다.

텍스트 처리

  • echo: 입력한 내용을 출력한다.
    • 예: echo "The quick brown fox jumps over the lazy dog."
    • 결과: The quick brown fox jumps over the lazy dog.
  • cat: 하나 이상의 텍스트 파일을 연속적으로 출력한다.
    • 예: cat thesis.txt
    • 결과: thesis.txt 파일의 모든 내용이 출력된다.
  • sort: 입력된 텍스트를 줄 단위로 정렬한다.
    • 예: cat unsorted_list.txt | sort -n
    • 결과: unsorted_list.txt의 내용이 숫자 기준으로 정렬되어 출력된다.
  • less: 텍스트 파일의 내용을 자유롭게 조회하고 검색할 수 있다.
    • 예: less long_paper.txt
    • 결과: long_paper.txt의 내용이 페이지 단위로 표시되며, 스크롤과 검색이 가능하다.
  • head: 텍스트 파일의 앞 몇 줄을 출력한다.
    • 예: head -n 20 results.csv
    • 결과: results.csv의 처음 20줄이 출력된다.
  • tail: 텍스트 파일의 마지막 몇 줄을 출력한다.
    • 예: tail -n 10 log.txt
    • 결과: log.txt의 마지막 10줄이 출력된다.
  • cut: 텍스트를 특정 구분자에 따라 나눈다.
    • 예: cut -d',' -f2 data.csv
    • 결과: data.csv 파일의 각 줄에서 두 번째 필드가 출력된다.
  • uniq: 중복된 텍스트 값을 제거한다.
    • 예: sort data.txt | uniq -c
    • 결과: data.txt의 중복된 줄이 제거되며, 각 줄의 출현 횟수가 표시된다.
  • grep: 정규식을 사용해 텍스트를 검색한다.
    • 예: grep -E '^Error|^Warning' log.txt
    • 결과: log.txt에서 "Error" 또는 "Warning"으로 시작하는 모든 줄이 출력된다.
  • wc: 텍스트의 단어, 줄, 문자 수 등을 센다.
    • 예: wc -l results.txt
    • 결과: results.txt의 총 줄 수가 출력된다.

파일 제어 및 이동

  • ls: 현재 디렉토리 내의 파일과 폴더를 출력한다.
    • 예: ls -la
    • 결과: 현재 디렉토리의 모든 파일 및 폴더 목록과 그에 대한 상세 정보가 출력된다.
  • cd: 디렉토리를 변경한다.
    • 예: cd /path/to/research/project
    • 결과: /path/to/research/project로 이동한다.
  • cp: 파일을 복사한다.
    • 예: cp paper_draft.txt backup_paper_draft.txt
    • 결과: paper_draft.txt가 backup_paper_draft.txt로 복사된다.
  • mv: 파일을 이동한다.
    • 예: mv draft.pdf /path/to/archives/
    • 결과: draft.pdf가 지정된 경로로 이동된다.
  • rm: 파일을 삭제한다.
    • 예: rm -i sensitive_data.txt
    • 결과: sensitive_data.txt를 삭제하기 전에 확인 메시지가 출력된다.
  • chown: 파일의 소유자와 그룹을 변경한다.
    • 예: chown student:research_group thesis.pdf
    • 결과: thesis.pdf의 소유자와 그룹이 변경된다.
  • chmod: 파일의 권한을 변경한다.
    • 예: chmod 600 private_notes.txt
    • 결과: private_notes.txt의 읽기 및 쓰기 권한이 소유자에게만 부여된다.
  • find: 파일을 검색한다.
    • 예: find / -name 'data_*.csv'
    • 결과: 시스템 전체에서 'data_'로 시작하는 모든 CSV 파일의 경로가 출력된다.
  • pwd: 현재 디렉토리의 경로를 출력한다.
    • 예: pwd
    • 결과: 현재 위치한 디렉토리의 절대 경로가 출력된다.

시스템 및 프로세스 제어

  • sudo: 관리자 권한으로 명령을 실행한다.
    • 예: sudo apt-get upgrade
    • 결과: 시스템의 모든 패키지가 최신 버전으로 업그레이드된다.
  • apt-get: APT 패키지 관리자를 통해 패키지를 설치하거나 제거한다.
    • 예: sudo apt-get install texlive
    • 결과: LaTeX 문서 작성을 위한 texlive 패키지가 설치된다.
  • ps: 현재 실행 중인 프로세스 목록을 출력한다.
    • 예: ps aux | grep python
    • 결과: 실행 중인 Python 프로세스의 목록이 출력된다.
  • kill: 특정 PID에 해당하는 프로세스에 시그널을 보낸다.
    • 예: kill -9 1234
    • 결과: PID가 1234인 프로세스가 강제로 종료된다.

기타

  • ssh: 원격으로 서버에 접속한다.
    • 예: ssh user@remote-server
    • 결과: 원격 서버에 접속하여 해당 사용자로 로그인된다.
  • tmux: 여러 셸 세션을 관리하고, 터미널 연결이 끊겨도 세션을 유지한다.
    • 예: tmux new -s session_name
    • 결과: 새로운 tmux 세션이 생성된다.
  • watch: 주기적으로 명령을 실행하여 결과를 표시한다.
    • 예: watch -n 5 df -h
    • 결과: 매 5초마다 시스템의 디스크 사용량이 갱신되어 표시된다.
  • curl: URL과 통신한다.
  • wget: 네트워크를 통해 파일을 다운로드한다.
    • 예: wget --limit-rate=200k http://example.com/file.zip
    • 결과: file.zip이 현재 디렉토리에 다운로드되며, 다운로드 속도가 200KB로 제한된다.
  • scp: SSH를 통해 원격 서버로 파일을 전송한다.
    • 예: scp thesis.pdf user@remote-server:/path/to/destination/
    • 결과: thesis.pdf가 원격 서버의 지정된 경로로 전송된다.

 

 

위의 몇몇 예시들에서 |(pipe) 기호가 등장한다. 파이프 라고도 불리는 수직선 기호는 명령어의 출력을 다른 명령어의 입력으로 사용할 때 쓰며, 리눅스에서 다양한 방식으로 사용되므로 용법과 예시를 알아두는 것이 좋다.

 

수직선(|) 기호

  • 예시1: ls -l | grep 'txt'
    • 결과: 현재 디렉토리에서 .txt 파일만 출력한다. 이 명령어는 ls -l의 결과를 grep 'txt' 명령어로 전달하여, .txt라는 문자열이 포함된 파일의 목록을 필터링한다.
  • 예시2: cat file.txt | sort | uniq
    • 결과: file.txt의 내용을 정렬하고 중복된 줄을 제거한 후 출력한다. 이 과정에서 cat 명령어로 파일의 내용을 읽고, sort 명령어로 정렬한 후, uniq 명령어로 중복을 제거하여 최종 결과를 제공한다.
  • 응용 예시: ps aux | grep 'python' | awk '{print $2}'
    • 결과: 실행 중인 Python 프로세스의 PID(프로세스 ID) 목록을 출력한다. 여기서 ps aux로 모든 프로세스를 나열한 후, grep 'python'으로 Python 관련 프로세스를 필터링하고, awk '{print $2}'로 PID를 추출한다.