[Server] Linux - 쉘(Shell), 쉘 스크립트(Shell Script)

seonjeong·2023년 11월 26일
0

Server

목록 보기
8/15
post-thumbnail

❤️ 쉘(Shell)

사용자가 입력하는 명령어를 읽고 해석하여 운영체제가 이해할 수 있도록 도와주는 명령어 해석기

사용자(프로그램)에게 받은 명령을 전달받아 커널이 이해할 수 있도록 해석하여 전달하고, 커널은 하드웨어와 직접적으로 통신하는 역할을 한다.

즉, 운영체제의 커널과 사용자 간의 인터페이스 역할을 수행한다.

커널(Kernel)

  • 하드웨어를 제어하는 운영체제의 핵심
  • 하드웨어 리소스 (CPU, 메모리, 스토리지 등) 관리
  • 소프트웨어에서 하드웨어 및 리소스에 대한 액세스를 추상화

리눅스 쉘 종류

쉘 이름위치특징
sh (Bourne Shell)/bin/sh- 최초의 유닉스 쉘
- 논리 및 산술 연산을 처리하는 내장 기능이 없어 이전 명령을 기억할 수 없다
ksh (Korn Shell)/bin/ksh- 본 쉘을 개선한 상위집합으로 history, alias 등 작업 추가
csh (C Shell)/bin/csh- 본쉘의 개선 버전
- history, alias, ~ (홈디렉토리) 기능 추가, 명령어 편집 기능 제공 X
tcsh/bin/tcsh- csh 개선 버전으로 명령어 편집기능 제공, 자동완성, where 명령어 제공
⭐ bash (Bourne Again Shell)/bin/bash- 본쉘의 확장 버전으로 만든 Unix 쉘
- Linux, Mac의 기본 쉘로 사용된다
- mv, cp, rm, touch, ls, mkdir, cd, rmdir 등의 명령어 추가
⭐ zsh/bin/zsh- bash, ksh, tcsh의 기능을 결합
- 맞춤법 검사, 로그인 감시, 자동 생성, 플러그인 및 테마가 지원
- oh my zsh 등의 사용자 정의 테마를 지원

  • 대부분 bash, zsh을 많이 사용한다.
  • 서로 유사한 특성을 갖고 있지만 zsh의 경우 bash가 갖고 있지 않은 추가적인 기능을 갖고 있어 더 편리하다는 평을 받기도 한다.

  • 사용중인 쉘 확인 : echo $0를 입력하면 확인할 수 있다
  • 쉘 변경 : chsh -s /bin/[쉘이름] [사용자명]을 입력하면 현재 사용 중인 쉘을 변경할 수 있다

❤️ 쉘 스크립트(Shell Script)

쉘에서 사용할 수 있는 명령어들의 조합을 모아 만든 배치(batch) 파일

즉, 운영체제의 Shell을 이용하여 한줄씩 순차적으로 읽으면서 명령어들을 실행시켜주는 인터프리터 방식의 프로그램이다.

예시

  • 아래 명령어를 실행하는 코드를 작성해보자
    - 현재 디렉토리에 bak 디렉토리가 없다면 만들고 있다면 만들지 않는다
    - 현재 디렉토리에 있는 모든 파일 중에 .log로 끝나는 파일을 bak 디렉토리로 복사한다

  • 편집기를 사용해서 아래와 같은 코드를 작성한다

    • #!bin/bash → bash 쉘을 사용하겠다는 의미
    #!/bin/bash  
    if ! [ -d bak ]; then
        mkdir bak
    fi
    cp *.log bak
  • 실행시키기 위해서는 권한을 부여해야 한다 → chmod +x [파일명]

    • x는 excutable(실행가능)함을 의미한다
  • ./backup 실행시키면 해당 명령을 수행한 것을 확인할 수 있다

    • 결과를 확인하기 위해 기존의 폴더는 삭제하고 실행시켰다



Reference

생활코딩-리눅스 강좌
https://sasca37.tistory.com/286
https://minkwon4.tistory.com/159

profile
🦋개발 공부 기록🦋

0개의 댓글