본문 바로가기
IT/리눅스

리눅스 쉘(shell)을 알아보자

by IT 과학정복 2024. 1. 30.
반응형

이번 시간에는 리눅스 쉘(shell)을 알아보도록 하겠습니다.
 
리눅스 쉘은 사용자와 시스템 커널 사이에서 중추적인 역할을 하며, 
사용자의 명령을 해석하여 그에 따른 작업을 실행하는 인터페이스입니다. 
 
쉘 환경
쉘은 사용자의 환경을 관리하는 역할도 합니다.
예를 들어, 환경 변수는 사용자의 세션에 대한 정보를 저장하고,
이 정보는 쉘 스크립트나 다른 프로그램에서 사용될 수 있습니다.
환경 변수는 'export' 명령어를 사용해 설정할 수 있습니다.

반응형

 명령어 확장
쉘은 명령어를 입력할 때 다양한 확장 기능을 제공합니다.
예를 들어, '*'와 '?'는 와일드카드 문자로,
여러 파일이나 디렉토리에 대한 명령어를 간편하게 입력할 수 있게 도와줍니다.
또한, 명령어의 결과를 다른 명령어의 입력으로 사용하는 파이프라인 기능도 제공합니다.
 
 
 
리눅스에서는 bash, csh, ksh, zsh 등의 다양한 쉘을 이용할 수 있습니다. 
이들은 각각 고유한 특징과 기능을 가지고 있으며, 사용자의 필요에 따라 선택하여 사용할 수 있습니다.


1. Bash (Bourne Again Shell)

  • 가장 널리 사용되는 쉘
  • Bourne Shell을 기반으로 개발되었음
  • 명령어 구문, 변수 사용 등 기본적인 쉘 기능 제공
  • 사용자 정의 함수, 별칭, 스크립팅 지원
  • 인터페이스는 간결하지만 기능적
  • history, alias, jobs, fg, bg 등
  • #!/bin/bash
    echo "Hello, World!"   # 화면에 문자열 출력

    # 변수 사용
    niceday="Hello, Tistory!"
    echo $ niceday

2. Csh (C Shell)

  • C 언어 스타일의 구문 사용
  • 명령 완성, 역사 검색 등 편리한 기능 제공
  • 별칭, 함수 정의 지원
  • Bourne Shell보다 복잡한 구문
  • 일부 유닉스 시스템 기본 쉘
  • set, unset, history, alias, source, which 등
  • #!/bin/csh
    alias dm 'tcpdump -i eth0 -nn not port 22'   
    # dm 명령어에 -i eth0 -nn not port 22 옵션을 기본적으로 적용하는 별칭 설정 

3. Ksh (Korn Shell)

  • Bourne Shell과 C Shell의 기능 통합
  • Bourne Shell보다 확장된 기능 제공 (job control, alias, scripting)
  • C Shell과 유사한 구문 일부 사용
  • 일부 상업용 리눅스 배포판 기본 쉘
  • job, fg, bg, typeset, alias, unalias 등
  • #!/bin/ksh
    set -A fruits apple banana cherry   # 배열 생성
    echo ${fruits[1]}   # 배열의 두 번째 요소 출력 (출력: banana)

4. Zsh (Z Shell)

  • Zsh 프레임워크 기반의 강력한 쉘
  • 플러그인 시스템을 통해 다양한 기능 확장 가능
  • 자동 완성, 문법 강조, 테마 설정 등 사용자 경험 향상
  • 다양하고 강력한 기능 제공
  • 일부 개발자 커뮤니티에서 선호
  • autoloadcompinitzstylezlebindkey 등
  • # 명령어 자동완성
    l + Tab  # ls로 자동완성

 
각 쉘의 장단점 비교

장점 단점
Bash 가장 널리 사용되어 지원 많음, 간결한 인터페이스 기능 상대적으로 기본
Csh 편리한 기능 제공, 사용자 정의 기능 지원 복잡한 구문, 일부 시스템에서만 기본
Ksh 다양한 기능 통합, Bourne Shell과 C Shell 기능 모두 이용 가능 일부 상업용 시스템에서만 기본
Zsh 강력한 기능 확장성, 사용자 경험 향상 시스템 기본 쉘로 사용되지는 않음, 복잡한 환경 설정 필요

 


 
쉘의 기본 원리
사용자가 명령어를 입력하면 쉘은 이를 해석하고, 해당 명령어를 실행시키는 프로세스를 생성합니다.
예를 들어, 'ls'라는 명령어를 입력하면, 쉘은 'ls' 프로그램을 실행시키는 새로운 프로세스를 생성하고,
이 프로세스는 현재 디렉토리의 파일 목록을 출력합니다.
 
쉘 스크립트
쉘은 단순히 명령어를 실행시키는 것뿐만 아니라, 쉘 스크립트라는 프로그래밍 언어도 제공합니다.
쉘 스크립트는 명령어를 연속적으로 실행시키는 것을 가능하게 하며,
변수, 조건문, 반복문 등의 프로그래밍 요소를 포함할 수 있습니다.
 
예를 들어, 다음은 간단한 쉘 스크립트의 예시입니다.


bash
#!/bin/bash
for i in {1..10}
do
   echo "Number is $i"
done


위의 스크립트는 1부터 10까지의 숫자를 출력하는 간단한 프로그램입니다.



또한, 쉘은 단순히 명령어를 실행시키는 것 이상의 기능을 가지고 있습니다. 
쉘 스크립트라는 프로그래밍 언어를 제공하는데, 
이를 통해 사용자는 명령어를 연속적으로 실행시키는 것을 가능하게 하며, 
변수, 조건문, 반복문 등의 프로그래밍 요소를 포함할 수 있습니다.

쉘은 사용자의 환경을 관리하는 역할도 수행합니다. 
환경 변수를 통해 사용자의 세션 정보를 저장하고, 
이 정보는 쉘 스크립트나 다른 프로그램에서 활용될 수 있습니다. 
환경 변수는 'export' 명령어를 사용해 설정 가능합니다.
 
 
 
오늘은 리눅스 쉘(shell)에 대해서 알아봤습니다.
쉘은 처음에는 GUI처럼 화면에서 보이는 것이 아닌, 명령어를 입력해야 하기 때문에
처음 접하는 사람은 어려움을 느낄 수 있습니다. 
하지만 명령어에 익숙해지다 보면 훨씬 빠른 작업이 수행이 가능하기 때문에
리눅스와 친해지시려면 실습을 통해 숙달하시어 리눅스마스터가 되시길 바랍니다.
 

반응형

'IT > 리눅스' 카테고리의 다른 글

리눅스를 알아보기  (0) 2024.02.10
리눅스 iptables 알아보기  (1) 2024.01.31
[squid] proxy 서버 쉽게 만들기  (0) 2024.01.21
let's encrypt 인증서 발급 및 적용  (0) 2024.01.21
리눅스(우분투) root 권한 얻는 방법  (0) 2024.01.21