터미널과 리눅스 운영체제

조현근·2023년 4월 30일
0

AI Studty

목록 보기
6/7

⚡ 리눅스 명령어

  • ❤️ pwd : 현재 내가 위치한 디렉토리 출력(print working directory)

  • ❤️ echo : 뒤이어 입력한 내용을 출력합니다

  • ❤️ ls : 현재 디렉토리 내의 파일 및 폴더들을 출력합니다.

  • -l : 각 파일 및 폴더의 권한, 소유자, 크기, 수정일시 등 자세한 정보를 출력합니다.

  • -h : 파일 크기를 바이트 수 대신 사람이 알아볼 수 있는 단위(1K, 234M, 2G 등)로 표시합니다.

  • -t: 파일 수정시간 순으로 정렬해서 출력합니다. 최신 파일이 위쪽으로 표시됩니다.

  • -r: 정렬 순서를 뒤집어 출력합니다. -rt의 형태로 쓰면 최신 파일이 아래쪽으로 표시되어 유용할 때가 있습니다

  • cd: Change Directory의 약자로, 뒤에 따라오는 폴더로 내가 있는 셸의 현재 위치를 이동시킵니다.

  • ps: 현재 터미널과 관련된 프로세스 목록을 출력합니다.

  • ps -ef: 모든 터미널에서 현재 실행중인 프로세스 목록 및 부가정보를 출력합니다.

  • grep: 입력으로 전달된 내용에서 특정 문자열을 포함한 라인만 선택해서 출력합니다. 파이프(|)를 통해 다른 명령문 실행결과와 결합해서 사용할 때 특히 유용합니다.

  • sudo: 이어지는 명령을 최고 관리자 권한으로 실행합니다.

  • kill: PID에 해당하는 프로세스에 시그널을 보냅니다.

  • which: 명령어의 전체 경로를 출력합니다.

  • $가 붙으면 환경 변수(environment variable)를 의미

  • export: 셸 변수나 함수를 현재 환경으로 내보냅니다.

  • env: 명령어가 제공된다면 해당 명령어를 새로운 환경에서 실행합니다. 명령어가 제공되지 않은 경우 현재 환경의 정보를 출력합니다.

  • ❤️ apt-get: APT 패키지 관리자를 통해 공인 저장소에서 패키지를 가져다 설치하거나 제거합니다

  • ❤️ cat: 하나 이상의 텍스트 파일을 순서대로 출력합니다.

  • chown: 대상 파일의 소유 사용자와 그룹을 변경합니다.

  • sort: 입력된 텍스트를 줄 단위로 정렬합니다. ex)cat fruits.txt | sort

  • 셸 환경
    👍history: 셸 명령어 이력을 출력합니다.
    👍man: 프로그램의 매뉴얼 페이지를 출력합니다.
    👌which: 명령어의 전체 경로를 출력합니다.
    👌export: 셸 변수나 함수를 현재 환경으로 내보냅니다.
    👌env: 명령어가 제공된다면 해당 명령어를 새로운 환경에서 실행합니다. 명령어가 제공되지 않은 경우 현재 환경의 정보를 출력합니다.
  • 텍스트 처리
    ❤️echo: 뒤이어 입력한 내용을 출력합니다.
    ❤️cat: 하나 이상의 텍스트 파일을 순서대로 출력합니다.
    👍sort: 입력된 텍스트를 줄 단위로 정렬합니다.
    👍less: 텍스트 파일의 내용을 자유롭게 조회하고 검색합니다.
    👍head: 텍스트 파일의 앞 몇 줄만 출력합니다.
    👍tail: 텍스트 파일의 마지막 몇 줄만 출력합니다.
    👍cut: 텍스트를 구분자(delimiter)에 따라 나눕니다.
    👍uniq: 텍스트 중 중복 값들을 제거합니다.
    👍grep: 정규식을 활용해 텍스트를 검색합니다.
    👍wc: 텍스트를 단어, 줄, 문자 등 단위로 셉니다.
    👌comm: 텍스트 파일을 비교합니다.
    👌zcat: 압축된 텍스트 파일을 출력합니다.
    👌sed: 정규식을 활용해 텍스트를 변형합니다.
    👌awk: 텍스트를 스캔하고 변형합니다.
  • 파일 제어 및 이동
    ❤️ls: 현재 디렉토리 내의 파일 및 폴더들을 출력합니다.
    ❤️cd: Change Directory의 약자로, 뒤에 따라오는 폴더로 내가 있는 셸의 현재 위치를 이동시킵니다.
    ❤️cp: 파일을 복사합니다.
    ❤️mv: 파일을 이동합니다.
    ❤️rm: 파일을 삭제합니다. 폴더를 삭제하기 위해서는 -r (recursive) 옵션을, 빈 폴더가 아니더라도 내부까지 삭제하려면 -f (force) 옵션을 함께 사용해야 합니다.
    👍chown: 대상 파일의 소유 사용자와 그룹을 변경합니다.
    👍chmod: 대상 파일의 권한을 변경합니다.
    👍find: 파일을 찾습니다.
    👍pwd: Present Working Directory의 약자입니다. 현재 내가 >위치한 디렉토리 위치를 출력합니다.
    👌ln: 파일에 대한 링크를 생성합니다.
    👌touch: 파일 접근 및 수정 시간을 변경합니다. 빈 파일을 만드는데도 사용할 수 있습니다.
    👌tar: 파일 및 폴더를 하나의 아카이브 파일로 통합하고 압축합니다.
    👌mount: 새로운 저장장치를 파일시스템으로서 추가합니다.
    👌rename: 여러 파일들의 이름을 규칙에 따라 한번에 변경합니다.
    👌df: 파일시스템의 남은 용량을 표시합니다.
  • 시스템 및 프로세스 제어
    ❤️sudo: 이어지는 명령을 최고 관리자 권한으로 실행합니다.
    ❤️apt-get: APT 패키지 관리자를 통해 공인 저장소에서 패 >키지를 가져다 설치하거나 제거합니다.
    👍ps: 현재 프로세스 목록을 출력합니다.
    👍kill: PID에 해당하는 프로세스에 시그널을 보냅니다.
    👌fg: 배경에서 실행되는 작업을 전경(foreground)으로 가져옵니다.
    👌bg: 작업을 배경(backgound)으로 보냅니다.
    👌jobs: 전경 및 배경 작업의 목록을 표시합니다.
  • 기타
    ❤️ssh: 원격으로 셸에 접속합니다.
    👍tmux: 여러 개의 셸 세션을 관리하고, 터미널 접속이 끊어지더라도 셸 세션을 유지합니다.
    👍watch: 이어지는 명령을 주기적으로 실행하여 표시합니다.
    👍curl: 주어진 URL과 통신합니다.
    👍wget: 네트워크를 통해 파일을 다운로드합니다.
    👍scp: SSH를 통해 원격으로 파일을 전송합니다.
    👌ssh-keygen: SSH 공개키 비밀키 쌍을 생성합니다.
    👌ssh-copy: SSH 공개키를 해당 서버에 등록합니다.
    👌rsync: 원격으로 파일을 동기화합니다.
    👌xarg: 명령어를 구성하여 실행합니다. 이전 명령에서 인자를 넘겨받아 실행하거나, 다중 프로세스를 사용하여 명령을 병렬로 실행하는 등의 작업이 가능합니다.
    👌cron: 주기적으로 실행될 명령을 등록합니다.
    👌htop: 프로세스 목록 및 자원 사용량을 시각적으로 표시합니다.
  • 복사 및 붙여넣기 : Ctrl+Shift+C, Ctrl+Shift+V
  • 위아래 화살표를 통해 이전에 실행한 명령들을 다시 입력할 수 있습니다.
  • history 명령을 통해 기존에 실행한 명령들을 표시할 수 있습니다. 여기서 나오는 번호를 참고하여 !번호를 실행하면 해당 번호의 명령이 다시 실행됩니다.
  • Ctrl+A, Ctrl+E를 통해 명령어의 앞, 뒤로 커서를 이동할 수 있습니다.
  • clear 명령어 또는 Ctrl+L을 통해 기존에 터미널에 출력되었던 내용을 깨끗이 지울 수 있습니다.
  • 실수로 Ctrl+z를 눌러 프로세스를 중지시켰다면, fg를 통해 다시 재개시킬 수 있습니다.
  • 실수로 vi 편집기에 처음 들어갔다면, Ctrl+C 또는 Esc를 누른 뒤 :q!를 입력하고 엔터를 눌러 편집기를 종료할 수 있습니다.
  • sudo apt install curl 및 curl parrot.live를 통해 춤추는 앵무새를 볼 수 있습니다. (클라우드에서는 작동이 안되니 우분투가 설치된 로컬 환경이 있다면 테스트해보세요!)
  • >를 통해 명령어의 결과를 파일에 저장
  • >>를 쓰면 명령어의 결과가 기존 파일 뒤에 추가

/home: 사용자별 홈 디렉토리들이 있는 곳
/root: 최고 관리자 계정의 홈 디렉토리
/mnt: 저장장치(HDD, SSD)가 붙는 위치
/media: 이동식 미디어(USB 드라이브)가 붙는 위치
/tmp: 재부팅 시 삭제될 임시 파일들을 저장하는 폴더
/dev: 컴퓨터에 연결된 하드웨어 및 가상 기기(device)들을 가리키는 파일들
/proc: 현재 실행 중인 프로세스들을 가리키는 파일들
/etc: 각종 설정 파일들
/bin: 실행 가능한 프로그램(binary)들
/sbin: 시스템 관리용 프로그램들
/usr: 다중 사용자 모드에서 사용 가능한 파일 및 프로그램들 (root 계정만 있는 단일 사용자 모드에서는 사용 불가)
/var: 캐시, 로그 등 시스템 구동 간 계속 내용이 바뀌는 파일들

⚡ 운영체제란?

  • 컴퓨터의 다양한 하드웨어 장치들과 더불어 소프트웨어를 관리하는 시스템

🔥 커널(알맹이)

  • 우분투의 커널은 리눅스

🔥 셸(껍데기)

  • CLI와 GUI로 구분할 수 있다.

🔥 프로세스와 스레드

  • 프로그램 : 컴퓨터가 수행할 작업을 기록해 놓은 것
  • 프로세스 : 프로그램이 실제로 실행될 때 운영체제는 이를 프로세스 라는 단위로 관리한다. 즉, 운영체제는 프로세스 단위로 메모리와 CPU 연산 등 컴퓨팅 자원을 분배

🔥 htop

  • CPU 및 메모리 사용량을 시각화하고, 프로세스 별 CPU 사용량을 표시해 주는 프로그램

0개의 댓글