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

쉘의 이해

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


ch1. 쉘 기능 및 종류 


• 쉘(Shell) : 명령어 해석기. 커널과 직접적으로 연결되어 해석 결과를 커널로 보냄


• 본 쉘(Bourne Shell, sh)
- 스티븐 본이 개발하였으며, 강력한 명령 프로그래밍 언어 기능을 갖추고 있음 
- 상호 대화형(Interactive) 방식을 사용하지 않음


• C 쉘(csh)
- 빌 조이가 개발하였으며, C 언어와 유사한 언어를 사용 
- 상호 대화형 방식으로 구성


• 콘 쉘(Korn Shell, ksh)
- 데이브 콘이 개발하였으며, 사용하기 편리하고 기능이 탁월하다. 
- 명령행 편집 기능을 제공


• 배시(Bourne-Again Shell, bash)
- 브라이언 폭스가 개발하였으며, sh 호환의 명령어 해석기 
- 처음 로그인 했을 때 디폴트로 주어지는 쉘이다.

 

 

# 특수문자 
• $ : 변수 접근 기호
ex) $value : 변수 value
      $SHELL : 환경변수 SHELL. 사용하는 쉘의 위치가 저장되어 있음

 

: 이 문자 뒤에 나오는 특수문자는 문자로 처리된다. (escape 처리된다고 말한다.)
ex)  # echo \$a → $a 문자 출력 
       # echo $a →   변수 a의 값 출력


• # : 주석 처리 문자

 

 

ch. 2 쉘 스크립트의 장단점

 

1) 장점

쉘 스크립트의 대표적인 장점은 다른 프로그래밍 언어에서 작성된 코드보다 훨씬 더 빠르게 처리된다는 점입니다. 다른 프로그래밍 언어들은 작성한 코드를 컴퓨터가 해석할 수 있도록 컴파일 과정을 거치게 되지만  쉘 스크립트는 따로 컴파일을 수행하는 단계가 없습니다. 이와 같은 장점으로 기존보다 더 빠르게 코드를 처리할 수 있습니다.

 

 

2) 단점

쉘 스크립트를 사용할 때 몇 가지 단점에 대해 살펴보겠습니다. 먼저 실행하는 각 명령에 대한 잠재적으로 새로운 하부 프로세스가 많이 필요하게 됨에 따라 속도가 느려질 수 있습니다. 그리고 더 많고 복잡한 스크립트들은 쉘 스크립트 언어의 자체적인 제한영역에서 실행할 수 있지만 이와 같은 제한으로 인해 다양한 쉘이 문제를 개선할 목적으로 고품질의 코드와 확장을 기록하기에는 다소 힘들 수 있다는 단점도 존재합니다.

 

 

ch.3 리눅스 시스템의 이해

 

• * : 0개 이상의 문자가 일치함을 나타내는 치환 문자

ex) a*e : apple, ace 등의 문자가 포함됨.

 

(별표): 이는 0개 이상의 문자를 나타내는 와일드카드 문자입니다. 예를 들어, "a*e" 패턴은 "apple," "ape," "axe"와 같은 단어와 일치합니다.

 

 

• ? : 1개의 문자가 일치함을 나타내는 치환 문자
ex) a?e : ace, are, age 등의 문자가 포함됨.

 

? (물음표): 이는 1개의 문자를 나타내는 와일드카드 문자입니다. 예를 들어, "a?e" 패턴은 "ace," "are," "age"와 같은 단어와 일치합니다.

 


• “ (큰따옴표) : `(역따옴표), \ 를 제외한 모든 특수문자를 일반문자로 처리
ex) # echo “$HOME, $USER” →   환경변수 HOME과 USER의 값을 출력한다. 
(실행결과 예) /home/fedora, fedorauser

 

" (큰따옴표): 이는 `(역따옴표)와 \를 제외한 모든 특수 문자를 일반 문자로 처리하는 따옴표입니다. 예를 들어, "# echo "$HOME, $USER""는 환경 변수 HOME과 USER의 값을 출력합니다. (실행 결과 예: /home/fedora, fedorauser)

 


• ‘ (작은따옴표) : 모든 특수문자를 일반문자로 처리
ex) # echo ‘$HOME, $USER’ → $HOME, $USER 을 그대로 출력

 

' (작은따옴표): 이는 모든 특수 문자를 일반 문자로 처리하는 따옴표입니다. 예를 들어, "# echo '$HOME, $USER'"는 $HOME, $USER을 그대로 출력합니다.

 


• ` (역따옴표) : 역따옴표로 감싼 문자열을 명령어로 해석
ex) # echo `pwd` → pwd 를 명령어로 해석하여 pwd 명령의 결과를 출력

 

(역따옴표): 이는 역따옴표로 묶인 문자열을 명령어로 해석합니다. 예를 들어, "# echopwd`"는 pwd를 명령어로 해석하여 pwd 명령의 결과를 출력합니다.

728x90