Cs

15. 리눅스(Linux) 쉘의 종류와 쉘 스크립트(Shell Script)(1)

ITSEONG 2022. 4. 26. 19:30

쉘이란 무엇인가?

1. 쉘은 커널과 사용자 사이를 이어주는 역할을 한다.

2. 쉘은 하나의 명령어 처리기이다.

3. 사용자로부터 명령어를 입력받아서 해당 명령어를 처리한다.

- 윈도의 CMD, PowerShell 도 쉘의 종류 중 하나이다.

 

리눅스에서 쉘의 종류는 무엇이 있는가?

 

1. Bourne Shell( sh )

 - 본 쉘은 유닉스 버전 7의 기본 유닉스 셀이었다. 스티븐 본(Stephen Bourne)이 개발했고 1977년에 처음으로 유닉스 버전 7에 포함되었다.  대부분의 리눅스에 기본적으로 설치되어있다. 설치 위치는 '/bin/sh'이다.

 

2. C Shell( csh )

 - C 쉘은 1978년 버클리 대학의 빌 조이가 개발하였다. 이름에서 유추할 수 있듯 C 언어를 기반으로 만들어졌다. 강력한 프로그램 작성 기능을 가지고 있다. sh 대비 편리한 기능 때문에 일반 사용자들이 즐겨 사용한 쉘이다. 설치 위치는 '/bin/csh'이다.

 

3. Korn Shell( ksh )

 - 콘 쉘은 1983년 AT&T사의 벨 연구소에서 근무하던 데이비드 콘이 개발했습니다. 이 콘 쉘 역시 Bourne Shell을 확장하여 만들었으며 C Shell의 유용한 기능들을 추가하였다. C Shell의 특징들을 모두 제공하면서 처리 속도도 빠르다는 장점이 있다. 설치 위치는 '/bin/ksh'이다.

 

4. Bourne again Shell( bash )

 -  Bash SMS GNU 프로젝트의 쉘이다. 이 쉘은 Korn Shell( ksh )과 C Shell( csh )의 유용한 기능을 통합한 sh 호환 쉘이다.  IEEE POSIX P1003.2/ISO 9945.2 셸 및 도구 표준을 준수하기 위한 것이다. 프로그래밍 및 대화식 사용 모두에 대해 sh보다 기능 향상을 제공한다. 또한 대부분의 sh 스크립트는 수정 없이 bash에서 실행할 수 있다. 현시대에서 가장 많이 사용되는 Shell이다. 설치 위치는 'bin/bash'이다.

 

이외에도 많은 쉘들이 있다. 나는 가장 많이 사용하는 bash를 사용할 것이다.

 

Bash의 특징

- 명령줄 편집

- 무제한 크기의 명령 기록

- 작업 제어,

- 쉘 함수 및 별칭,

- 크기에 제한이 없는 인덱스 배열, 

- 2에서 64까지의 모든 기수에 대한 정수 산술.

 

쉘 스크립트는 무엇인가?

 쉘 스크립트는 무엇인가? 위에서 쉘은 명령어 처리기라고 알게 되었다. 스크립트는 대본이다. 그러니 쉘 스크립트는 명령어 처리기의 대본이다. 명령어 처리기가 처리하기 위한 명령어들이 적혀 있는 스크립트인 것이다. 

 

우리는 명령어를 한 줄씩 작성하였다면 쉘 스크립트를 이용하면 여러 개의 명령어를 입력시켜 놓고 실행시켜 줄 수 있다.

 

우리는 쉘 스크립트를 어떻게 사용할 수 있을까? 

명령어들을 나열해 놓고 자동적으로 실행이 될 수 있다면 업무의 효율성이 증가할 것이다.

 

쉘 스크립트의 작성법

 

쉘 스크립트의 첫 문장은   #!으로 시작하여야 한다.

영어로 'shebang'이라 하며 '쉬방'이나 편하게 읽으면 될 것 같다.

어원은 https://en.wikipedia.org/wiki/Shebang_(Unix) 여기서 보면 될 것이다.

 

#! 은 이 스크립트를 실행시켜줄 프로그램의 경로를 지정하는 역할이다.

 

난 bash를 사용하기로 했으니 #!/bin/bash를 사용한다.

#!/bin/bash
#!/bin/sh
#!/bin/ksh
#!/bin/csh

쉘 스크립트에서 변수를 사용하려면 유의사항이 있다.

 

java나 php 등 다른 언어에서는 변수를 사용하기 위해서는 변수 타입을 선언하거나, $를 붙여 줘야 한다. 하지만 쉘 스크립트에서는 

 

1. 변수를 선언할 때 변수명만 적어주면 된다. 단 이름에 숫자는 포함될 수 있지만 숫자로 시작될 수 없다.

ex) name="itseong"(0) , name1(0), 1 name(x)

2. 변수는 대, 소문자를 구별한다.

3. 변수에는 모든 값이 문자열로 저장된다.

4. 값을 사용할 때는 변수명 앞에 특수문자'$'를 붙여 사용한다.

ex) $name, ${name} *{}의 차이는 문자열을 붙여서 쓸려면 {}이 필요하다.

5. 값을 대입할 때는 특수문자를 '$'를 사용하지 않는다. 

ex) name=1234, name='itseong'

6. 등호를 사용할 때는 등호 앞뒤로 공백이 없어야 한다.

ex) num=14, name='itseong'

반응형