본문 바로가기
서버 보안/셸 스크립트(shell script)

셸의 기본_shell script

by 어깨 :) 2023. 4. 17.
728x90

1. 정의

셸(Shell)은 컴퓨터 운영체제에서 사용자와 컴퓨터 하드웨어 또는 운영체제 간의 인터페이스 역할을 하는 프로그램입니다. 쉘은 터미널(terminal)이나 콘솔(console) 등의 사용자 인터페이스를 통해 입력된 명령어를 해석하고, 운영체제의 기능을 호출하여 실행합니다.

보통 리눅스나 macOS와 같은 유닉스(UNIX) 계열의 운영체제에서는 Bash, Zsh, Ksh 등 다양한 셸이 존재하며, Windows에서도 PowerShell이나 CMD 등의 셸을 사용할 수 있습니다.

셸은 사용자가 명령어를 입력하면, 그 명령어를 해석하여 해당하는 프로그램을 실행하고 그 결과를 출력합니다. 이를 통해 파일 관리, 프로그램 실행, 프로세스 관리, 환경 설정 등을 수행할 수 있습니다. 또한 셸은 스크립트를 작성하여 프로그래밍적인 방식으로 작업을 수행할 수 있기 때문에, 자동화 작업이나 반복적인 작업을 간단하게 처리할 수 있습니다.

 

 

 

 

2. 특징

우분투(Ubuntu)의 BASH(Bourne-Again SHell) 셸에 대한 특징은 다음과 같습니다.

-Alias 기능(명령 단축 기능): BASH 셸은 Alias 기능을 제공하여 자주 사용하는 명령어나 긴 명령어를 단축어로 지정하여 사용할 수 있습니다. 이를 통해 명령어를 더 빠르게 입력하고 실행할 수 있습니다.

-history 기능: BASH 셸은 사용자가 입력한 명령어를 기록하는 history 기능을 제공합니다. 이를 통해 이전에 입력했던 명령어를 쉽게 찾아서 재사용할 수 있습니다.

-연산 기능: BASH 셸은 산술 연산, 변수 치환, 조건문, 반복문 등 다양한 연산 기능을 제공합니다. 이를 통해 복잡한 작업을 쉽게 처리할 수 있습니다.

-job control 기능: BASH 셸은 백그라운드(background)로 실행되는 프로세스를 관리하는 job control 기능을 제공합니다. 이를 통해 다수의 프로세스를 동시에 실행하거나 백그라운드에서 실행하는 작업을 관리할 수 있습니다.

-자동 이름 완성 기능(tab): BASH 셸은 자동으로 이름을 완성해 주는 기능을 제공합니다. 사용자가 입력한 일부 문자열에 대해 가능한 모든 이름을 검색하여 자동으로 완성해 줍니다. 이를 통해 명령어나 파일 이름을 더 쉽게 입력할 수 있습니다.

-프롬프트 제어 기능: BASH 셸은 프롬프트(prompt)를 제어하는 기능을 제공합니다. 이를 통해 프롬프트에 표시되는 정보를 변경하거나 사용자가 원하는 형식으로 프롬프트를 지정할 수 있습니다.

-명령 편집 기능: BASH 셸은 명령어를 입력하는 도중에 이전에 입력한 명령어를 수정하거나 삭제하는 기능을 제공합니다. 이를 통해 실수를 줄이고 명령어를 더 빠르게 입력할 수 있습니다. BASH 셸에서는 이전 명령어를 화살표 키로 불러올 수 있는 기능도 제공합니다.

 

※ 주의: alias 명령은 긴 명령을 줄여서 사용할 때 편리하다. 예를 들어 Is -al 명령을 ls2라는 명령으로 사용하고 싶다면 alias ls2="ls -al" 명령으로 정의하면 된다.

즉, 프롬프트 제어 기능과 명령 편집 기능을 통해 BASH 셸은 사용자가 명령어를 더 효율적으로 입력하고 실행할 수 있도록 도와줍니다.

 

 

 

 

3. 셸의 명령문 처리 방법

셸 명령문은 명령문과 함께 여러 가지 옵션이나 인자(argument)를 사용할 수 있으며 형식은 다음과 같다.

 

(프롬프트) 명령 [옵션 ---] [인자---]

예를 들면 다음과 같이 다양한 옵션과 인자를 사용해서 명령을 사용한다.

# ls -l

# rm -rf  /mydir

# find.  /  -name "*. conf"

 

 

 

 

4. 환경 변수

셸은 여러 가지 환경 변수 값을 갖는데, 설정된 환경 변수는 echo $환경변수이름 형식으로 명령을 실행하면 확인할 수 있다. 예를 들어 호스트 이름을 출력하려면 echo $HOSTNAME 명령을 실행한다.

 

환경 변수 값을 변경하려면 export 환경변수 = 값 형식을 실행한다. 그 외의 환경 변수는 printenv 명령을 실행하면 출력된다. 단, 일부 환경 변수는 printenv 명령을 실행해도 나타나지 않는다는 사실에 주의하자.

 

 

728x90