반응형

쉘(Shell, sh)이란?

쉘은 운영체제 커널과 사용자 간의 인터페이스 역할(다리의 역할)을 수행하는 텍스트 기반의 명령어 해석기다.

 

리눅스는 현재 GUI 환경이 좋재하지만 GUI 환경이 구축되기 이전 CLI 환경에서 명령어를 타이핑하여 컴퓨터를 운용했다.
요즘에도 CLI 환경에서만 이용할 수 있는 강력한 기능들이 있어 CLI는 여전히 사용되고 있다.

이때 CLI 환경(터미널)에 입력한 명령을 해석하고 관리하는 프로그램을 쉘(Shell) 이라고 한다. 
쉘은 사용자와 커널을 연결시켜주는 역할을 하며 사용자가 입력한 명령어를 해석하여 운영체제가 해당 명령어를 알아들을 수 있게 해준다.


쉘의 종류

  • Bourne Shell (sh)
    • 유닉스 7버전의 기본 쉘. (본쉘)
  • C Shell (csh)
    • C언어 기반으로 개발되어 프로그램 작성 기능이 좋음.
    • History, alias 등 여러 유용한 기능이 있음.
    • 명령행 편집 기능이 없음.
  • TC Shell (tcsh)
    • C 쉘과 통합해서 탄생된 쉘. TC쉘이라고 불림.
    • C 쉘에 없는 명령어 자동완성, 편집기능을 지원.
  • Korn Shell (ksh)
    • 본쉘을 확장해서 만들어진 쉘. C 쉘의 여러 기능이 추가됨.
    • History, vi, 명령행 편집 등 여러 기능을 제공.
  • Bourne Again Shell (bash)
    • 본쉘을 기반으로 만들어진 쉘.
    • 현재 리눅스의 표준쉘.
    • GNU 프로젝트를 위해 개발되었으며 맥 OS 등 여러 운영체제에서 사용됨.
    • sh와 호환되는 문법과 history, 명령행 편집 등 다양한 기능을 가지고 있음.
  • Z shell (zsh)
    • 본쉘의 확장된 버전.
    • 다양한 기능, 플러그인, 테마가 존재.
      • 맞춤법 검사.
      • 로그인 / 로그아웃 감시 기능.
      • 바이트 코드와 같은 내장 프로그래밍 기능.
      • 구문의 과학적 표기적 지원.
      • 부동 소수점 산술 및 기타 기능.

본 쉘 / C 쉘만 명령행 편집기능이 없음.

위에 나열되어있는 순서로 개발됨.


Bash 쉘의 기본 기능들( 일부 zsh와 비교 )


명령행 자동완성 기능

- 리눅스에서 가장 많이 사용되는 기능 중 하나

  • 특정 파일이나 디렉토리명이 너무 길어서 불편한 경우  글자 몇 개만 입력한 뒤 Tab을 누르면 자동완성 기능이 동작.
    만약 해당 글자들이 포함되는 파일이 여러개 있다면 Tab을 두 번 눌러 목록을 확인할 수 있음.

 

예시

- bash에서 Tab을 두 번 눌러 목록을 확인한 후 한 번 눌러 자동 완성하기.

- zsh에서 플러그인 설치를 통해 해당 기능이 자동으로 적용.


History 기능

- C 쉘이나 ksh 등 여러 쉘이 가지고 있는 기본적인 기능들 중 하나

  • 실행했던 명령어가 히스토리 리스트에 저장되어 방향키 위, 아래로 이전에 사용했던 명령어를 볼 수 있으면 해당 명령어 사용 가능.
  • history 명령어 입력 시 사용자가 입력했던 명령어들(설정에 따라 다름)을 확인할 수 있음.
  • History 관련 환경변수로 최대 저장되는 명령어의 개수, 파일크기, 위치등을 확인할 수 있음.
  • echo $HISTSIZE로 최대 저장되는 명령어의 개수를 확인할 수 있음.

  • History의 환경변수들
    • HISTSIZE : 저장하는 명령어 개수 지정
    • HISTFILESIZE : 실제 히스토리 파일의 크기
    • HISYFILE : 히스토리 파일의 위치
    • HISTCONTROL : 중복되는 명령의 기록 유무 지정
      • = erasedups : 히스토리에서 중복 제거
      • = ignoredups : 이전 행과 일치하면 등록 안함
      • = ignorespace : 공백은 기록하지 않음

예시

- bash에서 위, 아래 방향키로 history 탐색


alias 기능

- 자주 사용하는 명령어들을 특정한 단어로 실행 가능하도록 만들어줌.

  • 특정 명령어에 별칭을 지정하여 해당 별칭을 입력하면 설정된 명령어가 실행되도록 만들어줌.

alias 명령어 사용 방법

alias 별칭='명령어'
  • 별칭에 명령어를 지정. - 명령어는 (' ')작은 따옴표로 묶어야함.
unalias 별칭
  •   지정된 별칭 - 명령어 관계를 해제.
alias
  • 지정된 명령어를 확인.

예시

- 별칭으로 명령어 설정

- 지정되어있는 명령어들 확인

- 별명으로 지정한 명령어 해제


명령행 편집 기능

- 명령어를 입력하는 도중 커서 이동이나 삭제 등을 빠르게 할 수 있는 기능.(mac에서도 control)

  • Ctrl + a : 가장 왼쪽으로 이동
  • Ctrl + e : 가장 오른쪽으로 이동
  • Ctrl + k : 커서 오른쪽 행 전체 삭제
  • Ctrl + u : 행 전체 삭제
  • Ctrl + y : 삭제 취소

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기