TIL) UNIX - Shell

oatraspberry·2023년 10월 18일
post-thumbnail

💻셸(Shell)

명령어 해석기 또는 명령 행 인터페이스

  • 사용자와 커널 사이에서 명령어를 해석하여 처리한다.
  • 셸 명령을 사용하면 GUI로는 하기 힘든 다양한 기능을 수행할 수 있다.

셸 명령을 프로그램으로 작성하여 처리할 수 있다.

  • 셸 스크립트는 텍스트 파일로, 프로그래밍을 통한 셸 명령의 조합이다.
  • 반복적으로 수행되는 작업을 셸 스크립트로 작성할 수 있다.
  • 셸이 셸 스크립트 파일을 읽어 처리할 수 있다.

텍스트 모드로 로그인을 하면 기본 셸이 주어진다.

📂셸 사용하기

  • 텍스트 모드에서 로그인을 하면 자동으로 '로그인 셸'이 실행된다.
  • 기본적으로 한 개의 명령을 입력하고 엔터를 눌러 명령을 수행한다.
  • 결과가 출력되면 명령 프롬프트가 다시 나타난다.
  • 세미콜론;을 사용하면 한 라인에 여러 명령을 입력할 수 있다.

📂셸의 종류

  • 많은 리눅스 배포판에서 Bash를 기본 셸로 사용한다.

    • 명령 프롬프트로 일반 사용자는 $, root 사용자는 #을 사용한다.
  • 셸의 종류에 따라 에일리어스 설정, 초기화 파일, 셸 스크립트 작성법, 명령 행 완성 기능, 명령 행 편집 기능 등에 차이가 있다.

Bash

  • Bourne Again Shell로 Bourne 셸의 개선된 셸
  • C 셸과 Korn 셸의 유용한 기능을 가져온다.
  • 실행 명령은 /bin/bash

📂셸 명령의 형식

$명령어 옵션 인수 ex) usermod -L bome

  • 옵션과 인수는 여러 개일 수 있다.
  • 대개 명령어는 프로그램의 이름이다.
  • 관리자 명령 또는 일반 사용자 명령이 있다.
  • 가장 간단한 형태의 실행은 명령의 이름만 사용한다.
    • who, date, ls, pwd

📂chch 명령

  • 기본 셸을 바꾸는 명령
    chch [options] [username]
    - 대괄호는 생략 가능하다.

📂명령어의 종류

  • 에일리어스: alias 명령을 사용하여 만든 명령의 별칭
  • 셸 예약어: 예약된 단어, do, while, case
  • 함수: 셸에서 수행되는 함수의 정의
  • 내장 명령: 셸 내부에 존재하는 명령, cd, echo, pwd
  • 일반 명령: 실행 파일이 존재하는 명령
  1. alias
  • 자주 사용되는 명령의 단축 명령을 만드는 명령
  • 계속 유지하려면 셸의 환경 설정 파일에 기록해 두어야 한다.
    • alias
    • alias la='ls -A'
    • alias rm='rm -i'
  1. type
  • 명령이 어떻게 해석되는지 알려주는 명령
    • type cd
    • type -a ls
  1. which
  • 실행 프로그램을 환경변수 PATH를 기초로 찾아 경로를 출력한다.
    • which rm
  1. man
  • 메뉴얼 페이지를 보여주는 명령
  • 명령의 사용법이나 설정 파일 등에 관한 온라인 도움말을 제공한다.
  • man passwd 또는 man 5 passwd
  • 명령어의 간단한 도움말을 보려면 명령 --help를 사용할 수 있다.

📂history

  • 이전에 수행했던 명령 행의 목록을 불러온다.
    history 또는 history 10
  • 히스토리 기능을 이용하여 명령을 실행하는 방법
    1. 이전에 수행했던 명령을 이용하여 명령을 수행할 수 있다.
    1. 다음 입력하고 실행한다.
      • !! - 직전 명령을 실행한다.
        • !n - 히스토리 목록에서 해당 명령을 실행한다.
        • !string - 지정된 문자열로 시작하는 최근 명령을 실행한다.
        • ↑방향키, ↓방향키 - 누를 때마다 직전 또는 직후 명령을 불러온다. 편집이 가능하다.

📂특수문자

  • 셸에서 특별한 의미를 가지는 문자
  1. 백슬래시(\): 특수 문자의 기능을 제거하는 이스케이프(escape) 문자 또는 긴 명령 행을 분리할 때 사용한다.
  2. 틸드(~): ~ 또는 ~username은 사용자의 홈 디렉터리를 의미한다.
  3. 도트(.): 현재 작업 디렉터리를 표시한다. 또는 명령 행의 맨 앞에서 셸 스크립트를 실행하는 source 명령이다.
  4. 더블도트(..): 현재 디렉터리의 부모 디렉터리다.
  5. 파운드(#): # 문자의 뒤에 나타나는 문자를 주석으로 처리한다.
  6. 달러($): $변수는 변수의 값을 추출한다.
  7. 앰퍼샌드(&): 명령&는 명령을 백그라운드로 실행시킨다. 명령어 뒷쪽 끝에 붙여서 실행한다.
  8. 애프터리스크(*): 파일 이름에서 사용할 때 0개 이상의 임의 문자열과 대응된다.
  9. 물음표(?): 파일 이름에서 사용할 때 1개 문자와 대응된다.
  10. 파이프(|): 앞 명령의 출력을 다음 명령의 입력으로 연결시킨다.
  11. < 또는 >: 파일으로부터 입력받을 때 또는 파일로 출력할 때 사용한다.
  12. >>: 표준 출력을 파일의 끝에 덧붙일 때 사용한다.
  13. 느낌표(!): 명령 히스토리 기능을 이용할 때 사용한다.
profile
개발자가 될테야

0개의 댓글