Post

스크립트와 자동화

Unix 및 Linux 운영 체제의 맥락에서 쉘은 사용자가 운영 체제와 상호 작용할 수 있게 해주는 명령줄 인터페이스(CLI)이다.

shell

쉘의 종류

  • Bourne Shell (sh)
    • 처음 나온 유닉스 쉘
    • 최신 쉘에서 볼 수 있는 사용자 친화적인 기능이 많이 부족하다.
    • 주로 대화형 사용(쉘 프롬프트에 직접 명령을 입력하고 한 번에 하나씩 실행하는 것)보다는 스크립팅(한 번의 실행으로 모든 명령을 순서대로 실행)에 사용된다.
  • C Shell (csh)
    • 구문이 C 프로그래밍 언어와 유사하다.
    • 내장된 산술 및 변수를 포함한 향상된 스크립팅 기능
    • 대화형 사용을 위한 별칭 및 명령 기록과 같은 기능
  • Korn Shell (ksh)
    • 본 쉘과 C 쉘의 기능을 결합했다.
    • 스크립팅과 대화형 사용에 모두 효율적이다.
    • 명령줄 편집, 작업 제어, 강력한 프로그래밍 환경이 포함되어 있다.
    • 본 쉘과 호환되므로 sh용으로 작성된 스크립트를 ksh에서 실행할 수 있다.
  • Bourne Again Shell (bash) ❗️
    • 본 쉘의 상위 쉘로, ksh 및 csh의 기능을 포함한다.
    • 명령줄 편집, 자동 완성, 명령 히스토리와 같은 광범위한 대화형 기능을 제공한다.
    • 대화형 사용과 스크립팅 모두에 가장 많이 사용되는 쉘이다.
    • 고급 스크립팅 기능이 포함되어 있고 POSIX(서로 다른 UNIX 운영체제 간 호환성을 유지하기 위한 표준)와 호환되므로 이식성이 좋다.
  • Z Shell (zsh)
    • bash, ksh, csh의 기능을 결합한다.
    • 강력한 테마 및 플러그인 기능을 제공하여 사용자 정의가 가능하다.
    • 맞춤법 교정 및 명령줄 완성과 같은 다양한 대화형 기능을 제공한다.

쉘 스크립트

쉘 스크립트는 Unix 기반 운영 체제 쉘에 대한 일련의 명령이 포함된 텍스트 파일이다.
이는 보통 여러 명령의 실행을 자동화할 목적으로 작성된 프로그램이다.

쉘 스크립트의 주요 특징

  • 자동화: 쉘 스크립트를 사용하면 일련의 명령을 특정 순서로 실행하여 반복적인 작업을 자동화할 수 있다.
  • 일괄 처리: 마치 명령줄에 입력하는 것처럼 여러 명령을 차례로 실행할 수 있다. 이 일괄 처리 기능은 동일한 명령 세트를 반복적으로 실행하는 데 유용하다.
  • 스크립팅 언어 기능: 쉘 스크립트는 프로그래밍 언어(javascript, java, python 등)만큼 강력하지는 않지만 상당한 성능과 유연성을 제공하는 변수, 함수 및 제어 구조를 지원한다.

쉘 중에 가장 많이 사용되는 Bash 쉘에 대해 좀 더 자세하게 알아보자. 😉

Bash

Bash는 유닉스 계열 운영 체제, 특히 Linux와 macOS에서 가장 널리 사용되는 쉘 중 하나이다.
Bash는 명령 인터프리터와 강력한 스크립팅 언어의 역할을 모두 수행한다.

Bash의 주요 기능

  • 명령줄 인터페이스(CLI): Bash는 운영 체제와 상호 작용하기 위한 사용자 친화적인 명령줄 인터페이스를 제공한다.
  • 스크립팅 언어: 명령 해석기일 뿐만 아니라 변수, 루프, 조건 및 함수와 같은 기능을 갖춘 향상된 스크립트 언어이다.
  • 명령 기록: Bash는 사용자가 입력한 명령 기록을 유지하므로 이전 명령을 쉽게 기억하고 수정할 수 있다.
  • 명령 완성: Bash는 명령, 파일 이름 및 변수에 대한 탭 완성을 지원하므로 입력 속도를 높이고 오류를 줄여준다.
  • 작업 제어: 사용자가 백그라운드 또는 포그라운드에서 실행되는 작업을 시작, 중지 및 제어할 수 있다.
  • 파이핑 및 리디렉션: Bash는 한 명령의 출력을 다른 명령의 입력으로 파이핑하여 복잡한 데이터 처리를 가능하게 한다. 또한 파일 및 기타 명령에 대한 입력 및 출력의 리디렉션(파일을 읽어서 입력으로 전달, 출력을 파일로 저장)을 허용한다.
  • 별칭: 사용자는 길거나 복잡한 명령 시퀀스에 대해 짧고 기억하기 쉬운 별칭을 만들어 효율성을 높일 수 있다.

간단한 사용 예시를 한번 살펴보자. 😉

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

# This script lists the files in the current directory and prints a count

echo "Listing files in the current directory:"
ls

echo
echo "Total number of files:"
ls | wc -l
  • #!/bin/bash: 스크립트를 해석하기 위해 Bash를 사용하도록 시스템에 지시하는 shebang 라인이다.
    • shebang
      • Unix 계열 OS(Linux, Mac)에서 스크립트 코드 최상단에서 해당 파일을 해석해 줄 인터프리터(소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경)의 경로를 지정한다.
  • ls: 이 명령은 현재 디렉터리의 모든 파일과 디렉터리를 나열한다.
  • ls | wc -l: 이 줄은 파이프라인을 사용한다. ls는 파일을 나열하고 wc -l은 파일 및 디렉터리 수에 해당하는 ls 출력의 줄 수를 계산한다.

bash-test

This post is licensed under CC BY 4.0 by the author.