- 쉘(Shell)은 명령 인터프리터(Command Interpreter)
- 사용자가 운영체제에 대화식(interactively)으로 명령을 내리거나, 명령을 일괄(batch)적으로 실행 할 수 있는 기능을 제공하는 응용 프로그램
- 쉘은 사용자가 시스템과 대화 할 수 있는 방법
- OS 의 코어
- 시간과 메모리를 프로그램에 할당해줌
- OS의 바깥쪽 단계
- 사용자와 상호작용
- 커널에 요청을 보냄
- #!/bin/bash: 쉬뱅(또는 해쉬뱅)은 스크립트 파일을 읽어들여서 실행시켜주는 번역기를 지목, 위의 예시에서는 /bin/bash 를 지목해주었지만, /usr/bin/env bash 로 지정 가능
- 아래에 스크립트 작성 하면 됨
- 리눅스에서는 줄바꿈을 위해 LF(Line Feed, 10 ,0a) 만 사용
- 윈도우스이서는 줄바꿈을 위해 LF 와 CR(Carriage Return, 14, 0d) 함께 사용
- hexdump -C (파일 이름) 으로 파일 내용의 16진법 표기 확인 가능
- 스크립트 작성 후, chmod +x (스크립트 파일명) 으로 실행권한 주기
- 현재 경로의 스크립트 파일은 ./(스크립트 파일명) 으로 실행 가능
- 또는 bash (스크립트 파일명) 으로 실행 가능
- source (스크립트 파일명) 으로 실행 가능
- . (스크립트 파일명) 으로 실행 가능
- 탭(Tab), 줄 바꿈(newLine), 세로 탭, 양식 공급(form feed), 캐리지 리턴(Carriage Return) 또는 공백(White Space)
- Bash는 공백을 사용하여 단어의 시작과 끝을 결정
- 사용자가 명령어를 입력할 시, 첫번째 단어는 명령어 이름, 추가 단어는 해당 명령어에 대한 인수
- 다양한 유형의 확장(Expansion)을 도입
- 파라미터 확장(Parameter Expansion), ex: $var, ${var} ...
- 명령 대체(command substitution), ex: $(command) ...
- 산술 확장(arithmetic expansion), ex: $((expression))
- 큰 따옴표 안의 텍스트가 여러 단어나 인수로 분리되지 않도록 보호
- 큰 따옴표 내의 문자들을 대체하는 것이 가능
- '\', '$','`'(option+₩)를 제외한 대부분의 다른 특수 문자의 의미는 억제 됨
- 문자 그대로의 의미를 갖도록 텍스트를 보호
- 모든 특수 문자의 해석이 방지됨(인용 부호 안의 문자열 내용을 Bash가 해석하지 않음)
- 특수 문자가 그대로 전달되고 여러 단어가 분할되지 않음
- 큰 따옴표는 안의 텍스트에서 '\', '$','`'(option+₩)의 기호를 포함한 문자들을 대체하는 것이 가능하지만 작은 따옴표는 불가능
- '#' 문자의 도입은 그 행의 끝까지 모두 주석으로 처리함
- 코멘트는 설명의 주석이며 쉘에 의해 처리되지 않음
- 조건부 표현식이 "true" 인지 "false" 인지를 결정하기 위한 조건식의 평가
- 테스트는 Bash에서 여러 조건을 평가하는 데 사용됨
- 테스트나 종료 상태를 무효화 하거나 되돌리기 위해 사용
- 명령의 출력 또는 입력을 재지정
- 초기 명령의 출력을 2차 명령의 입력으로 재지정
- 여러개의 명령을 하나로 묶는 방법
- 같은 줄에 있는 여러 명령을 구분하는데 사용됨
- 중괄호 안의 명령은 마치 하나의 명령처럼 취급됨
- Bash 구문이 하나의 명령만을 필요로 하고, 함수의 사용은 피하고 싶을 때, 인라인 그룹을 사용
- 인라인 그룹과 비슷하지만 내부 명령이 서브 쉘에서 실행되는 경우 사용
- 명령이 부작용을 일으키는 경우 샌드박스처럼 많이 사용됨(예를 들면 변수 변경)
- 현재의 쉘에는 영향을 주지 않음
- 산술 표현식에서 '+', '-', '*' 및 '/' 와 같은 문자는 계산에 사용되는 수학 연산자
- 산술 표현식은 다음과 같은 변수할당에 사용 가능: ((a=1+4))
- 산술 표현식은 테스트에도 사용 가능: if((a<b))
- 산술 표현식과 유사하지만, 산술 표현식은 산술만 진행하지만, 산술 확장은 산술 결과를 출력함
- ~(tild)는 홈 디렉토리를 나타냄
- 그 다음에 '/' 이 올때 '~' 가 현재 사용자의 홈 디렉토리를 나타냄
- 또는 사용자 이름 지정 가능(ex. ~w10sim/, ~/)