<Linux Shell Script Chapter 3> - 쉘 스크립트 1

심우열·2023년 2월 9일
0

Linux Shell Script

목록 보기
4/17

1. 쉘 스크립트란?

  1. 쉘(Shell)은 명령 인터프리터(Command Interpreter)
  2. 사용자가 운영체제에 대화식(interactively)으로 명령을 내리거나, 명령을 일괄(batch)적으로 실행 할 수 있는 기능을 제공하는 응용 프로그램
  3. 쉘은 사용자가 시스템과 대화 할 수 있는 방법

2. 리눅스 운영체제의 구성

1. Kernal

  1. OS 의 코어
  2. 시간과 메모리를 프로그램에 할당해줌

2. Shell

  1. OS의 바깥쪽 단계
  2. 사용자와 상호작용
  3. 커널에 요청을 보냄

3. 스크립트 작성 방법

  1. #!/bin/bash: 쉬뱅(또는 해쉬뱅)은 스크립트 파일을 읽어들여서 실행시켜주는 번역기를 지목, 위의 예시에서는 /bin/bash 를 지목해주었지만, /usr/bin/env bash 로 지정 가능
  2. 아래에 스크립트 작성 하면 됨

4. DOS 스타일의 줄 끝

  1. 리눅스에서는 줄바꿈을 위해 LF(Line Feed, 10 ,0a) 만 사용
  2. 윈도우스이서는 줄바꿈을 위해 LF 와 CR(Carriage Return, 14, 0d) 함께 사용
  3. hexdump -C (파일 이름) 으로 파일 내용의 16진법 표기 확인 가능

5. 스크립트의 실행 방법

  1. 스크립트 작성 후, chmod +x (스크립트 파일명) 으로 실행권한 주기
  2. 현재 경로의 스크립트 파일은 ./(스크립트 파일명) 으로 실행 가능
  3. 또는 bash (스크립트 파일명) 으로 실행 가능
  4. source (스크립트 파일명) 으로 실행 가능
  5. . (스크립트 파일명) 으로 실행 가능

6. 특수문자의 종류

1. 공백(White Space)

  1. 탭(Tab), 줄 바꿈(newLine), 세로 탭, 양식 공급(form feed), 캐리지 리턴(Carriage Return) 또는 공백(White Space)
  2. Bash는 공백을 사용하여 단어의 시작과 끝을 결정
  3. 사용자가 명령어를 입력할 시, 첫번째 단어는 명령어 이름, 추가 단어는 해당 명령어에 대한 인수

2. $ 확장(Expansion)

  1. 다양한 유형의 확장(Expansion)을 도입
  2. 파라미터 확장(Parameter Expansion), ex: $var, ${var} ...
  3. 명령 대체(command substitution), ex: $(command) ...
  4. 산술 확장(arithmetic expansion), ex: $((expression))

3. " " 큰 따옴표(Double Quotes),

  1. 큰 따옴표 안의 텍스트가 여러 단어나 인수로 분리되지 않도록 보호
  2. 큰 따옴표 내의 문자들을 대체하는 것이 가능
  3. '\', '$','`'(option+₩)를 제외한 대부분의 다른 특수 문자의 의미는 억제 됨

4. ' ' 작은 따옴표(Single Quotes)

  1. 문자 그대로의 의미를 갖도록 텍스트를 보호
  2. 모든 특수 문자의 해석이 방지됨(인용 부호 안의 문자열 내용을 Bash가 해석하지 않음)
  3. 특수 문자가 그대로 전달되고 여러 단어가 분할되지 않음
  4. 큰 따옴표는 안의 텍스트에서 '\', '$','`'(option+₩)의 기호를 포함한 문자들을 대체하는 것이 가능하지만 작은 따옴표는 불가능

5. # 주석(Commit)

  1. '#' 문자의 도입은 그 행의 끝까지 모두 주석으로 처리함
  2. 코멘트는 설명의 주석이며 쉘에 의해 처리되지 않음

6. [[ ]] 테스트(Test)

  1. 조건부 표현식이 "true" 인지 "false" 인지를 결정하기 위한 조건식의 평가
  2. 테스트는 Bash에서 여러 조건을 평가하는 데 사용됨

7. ! 부정(Negate)

  1. 테스트나 종료 상태를 무효화 하거나 되돌리기 위해 사용

8. >, < 방향 재지정(Redirection)

  1. 명령의 출력 또는 입력을 재지정

9. | 파이프(Pipe)

  1. 초기 명령의 출력을 2차 명령의 입력으로 재지정
  2. 여러개의 명령을 하나로 묶는 방법

10. ; 명령 분리자(Command Seperator)

  1. 같은 줄에 있는 여러 명령을 구분하는데 사용됨

11. { } 인라인 그룹(Inline Group)

  1. 중괄호 안의 명령은 마치 하나의 명령처럼 취급됨
  2. Bash 구문이 하나의 명령만을 필요로 하고, 함수의 사용은 피하고 싶을 때, 인라인 그룹을 사용

12. ( ) 서브 쉘 그룹(SubShell Group)

  1. 인라인 그룹과 비슷하지만 내부 명령이 서브 쉘에서 실행되는 경우 사용
  2. 명령이 부작용을 일으키는 경우 샌드박스처럼 많이 사용됨(예를 들면 변수 변경)
  3. 현재의 쉘에는 영향을 주지 않음

13. (( )) 산술 표현식(Arithmetic Expression)

  1. 산술 표현식에서 '+', '-', '*' 및 '/' 와 같은 문자는 계산에 사용되는 수학 연산자
  2. 산술 표현식은 다음과 같은 변수할당에 사용 가능: ((a=1+4))
  3. 산술 표현식은 테스트에도 사용 가능: if((a<b))

14. $(( )) 산술 확장(Arithmetic Expansion)

  1. 산술 표현식과 유사하지만, 산술 표현식은 산술만 진행하지만, 산술 확장은 산술 결과를 출력함

15. ~ 홈 디렉토리(Home Directory)

  1. ~(tild)는 홈 디렉토리를 나타냄
  2. 그 다음에 '/' 이 올때 '~' 가 현재 사용자의 홈 디렉토리를 나타냄
  3. 또는 사용자 이름 지정 가능(ex. ~w10sim/, ~/)
profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글