회사에서 사용하는 쉘스크립트 공부를 위해 따배쿠 및 기타 자료를 참고하여 학습을 하였다.
-> 즉 리눅스 커널에서 해석기라고 보면 된다.
Boarne shell(sh) : AT&T 벨연구소의 스티븐 본이 개발한 original shell
C Shell(csh, tcsh) : Bill Joy가 C언어의 기수을 넣어서 만든 shell
C언어의 문법을 적용
History, aliases, job control, vi command editing and completion 기능을 포함함
Korn shell(ksh) : David Korn이 AT&T에서 기존 bourne shell 에 C shell의 기능을 포함시켜 생성
Bourne-again shell(bash) : GNU Project로 만들어졌고, csh, ksh이 가진 기능을 포함하면서 bourne shell과 호한성을 많이 높여 shell로 리눅스, MAC oS의 기본 shell이고 윈도우에서도 사용가능(wsl2)

echo $SHELL
을 통해 기본 쉘 확인가능하다.
$cat /etc/shells
$echo $SHELL
$cat /etc/passwd
$chsh
예를 들어 ubuntu가 사용자라면 sudo chsh ubuntu -> /bin/bash -> /bin/sh 로 변경가능
데이터를 넣는 그릇
선언할 필요없이 사용가능
변수명: 문자, 숫자, (언더바)로 구성될 수 있지만, 시작은 반드시 문자나 로 시작
변수 선언: varname=value
$fname=seongmi
$score=90
$echo $fname
$set
-> set | grep name 이라고 검색하면 리눅스 상에서 name이라는 변수를 찾을 수 있다.
$unset fname
$export NAME = lee
$echo $NAME
일반 변수 선언을 하는것에 반해 환경변수로 선언하면 모든 어플리케이션의 변수로 선언되는것이다.
예를들어 PATH=/tmp라고 선언해버리면 기존의 PATH변수의 값들이 덮어써져 문제가 생긴다.
메타문자의 의미를 제거하고 단순 문자로 변경
$echo "Today is $(date)"
$echo "Today is 'date'"
위와 같이 작성하면, 실제 날짜가 찍힘
ps 만약 ''로 했으면 안된다.(rule참고)

다음과 같이 rm 명령어를 통해 바로 삭제가 된다.

alias별칭으로 rm -i를 rm으로 지정해 삭제전 확인절차를 추가한다.

쉘 스크립트를 실행하면 위와 같이 한가지 input을 집어넣을때 정상/에러 두가지의 output이 나온다.
위의 쉘의 실행결과를 터미널이 아닌 파일로 저장하는 방식이다.
cat passwd | cut -d: -f 1 | sort | wc -l
예시로 위와같이 여러 명령어를 조합하여 최종결과를 나타낼 수 있다.
즉 pipeline은 1의 실행결과를 2의 입력으로, 2의 실행결과를 3의 입력으로 쓰는 방식이다.