오늘 배운 것
커널 : 알멩이, 핵심
쉘 : 껍데기, 주변
>>> 사용자가 명령을 입력하면 그 명령을 컴퓨터가 이해할 수 있도록 하는 프로그램이 쉘(shell)입니다.
(쉘 : 사람이 이용하기 쉬운 명령어로 커널에게 전달하는 것)
쉘과 커널이 분리된 이유는 무엇일까?
쉘은 사람의 명령어를 해석하는 역할. 즉 사용자 입장에서 편한 쉘 프로그램을 사용하면 각자 취향에 맞게 커널을 제어할 수 있기 때문에 분리 된 것이 아닐까 추정됨.
다양한 쉘 프로그램을 사용해보면 쉘과 커널에 대한 이해도가 높아질 것
bash vs zsh
zsh이 추가적인 기능을 갖고 있기 때문에 보다 더 편리하다는 평가를 받고 있다.
ex.
cd dir1 Music
>>> dir1 디렉토리에서 Music 다이렉트로 이동가능
cd /U [+ 탭]
>>> 이니셜과 탭을 이용해 자동 완성 기능 사용가능
이렇듯 자신의 취향에 맞는 쉘을 다운받아 리눅스를 이용할 수 있음
Shell script
자주 반복 사용하는 또는 어쩌다 사용하더라도 복잡한 명령어라면?
어딘가에 저장해두었다가 불러와서 실행시키면 편하다!
>>> 쉘 스크립트로 자동화하여 사용할 수 있다
*.log
* : 와일드카드(조커카드) 같은 것으로 공통된 사항이 아닌 상이한 내용 모두 포함한다는 뜻이다.
if [ 조건 ]; than = if 조건문 이다음 아래에 탭키 1번 누르고 명령어 적기
! = <> 라는 뜻
fi = if 조건문 종료
nano backup
<backup>
#!/bin/bash
if ! [ -d bak ]; then
mkdir bak
fi
cp *.log bak
// 코드 해석
6행 bash shall 명령어로 수행하라
7행 만약 디렉토리 bak 이 없다면
8행 디렉토리 bak 를 만들어라
9행 if 종결
10행 확장자 .log 를 사용하는 모든 파일을 디렉토리 bak 에 복사해라
bash-3.2$ nano backup
bash-3.2$ ls -l
total 8
-rw-r--r-- 1 daco staff 0 9 14 15:19 a.log
-rw-r--r-- 1 daco staff 0 9 14 15:19 b.log
-rw-r--r-- 1 daco staff 62 9 14 15:31 backup
drwxr-xr-x 5 daco staff 160 9 14 15:20 bak
-rw-r--r-- 1 daco staff 0 9 14 15:19 c.log
bash-3.2$ ./backup
bash: ./backup: Permission denied
// backup 을 실행할 권한이 없다는 메시지
bash-3.2$ chmod +x backup
// backup 을 실핼할 수 있도록 x 를 추가하는 명령어
bash-3.2$ ls -l
total 8
-rw-r--r-- 1 daco staff 0 9 14 15:19 a.log
-rw-r--r-- 1 daco staff 0 9 14 15:19 b.log
-rwxr-xr-x 1 daco staff 62 9 14 15:31 backup
drwxr-xr-x 5 daco staff 160 9 14 15:20 bak
-rw-r--r-- 1 daco staff 0 9 14 15:19 c.log
bash-3.2$ ./backup
bash-3.2$ rm -rf bak
bash-3.2$ ls -l
total 8
-rw-r--r-- 1 daco staff 0 9 14 15:19 a.log
-rw-r--r-- 1 daco staff 0 9 14 15:19 b.log
-rwxr-xr-x 1 daco staff 62 9 14 15:31 backup
-rw-r--r-- 1 daco staff 0 9 14 15:19 c.log
bash-3.2$ ./backup
bash-3.2$ ls -l
total 8
-rw-r--r-- 1 daco staff 0 9 14 15:19 a.log
-rw-r--r-- 1 daco staff 0 9 14 15:19 b.log
-rwxr-xr-x 1 daco staff 62 9 14 15:31 backup
drwxr-xr-x 5 daco staff 160 9 14 16:04 bak
-rw-r--r-- 1 daco staff 0 9 14 15:19 c.log
bash-3.2$ ls -l bak
total 0
-rw-r--r-- 1 daco staff 0 9 14 16:04 a.log
-rw-r--r-- 1 daco staff 0 9 14 16:04 b.log
-rw-r--r-- 1 daco staff 0 9 14 16:04 c.log
bash-3.2$
// backup 이 정상적으로 실행되는 것을 볼 수 있다.
// 이것을 '쉘 스크립트' 라고 한다.
오늘 느낀 것
뭔가 슬슬 복잡하고 명령어를 외우기가 쉽지 않아 보인다. 매일매일 자주 쓴다면 모를까. 이건 외워도 며칠만 지나도 다 잊어버릴 것 같다. 어쨌든 오늘은 쉘이란 것을 배웠고, 쉘이라는 프로그램이 다양하다는 것을 알았고, 또 함수처럼 명령어들의 조합을 저장하여 원할 때 꺼내 쓸 수 있다는 것을 알게되었다. 뭐랄까 코딩이랑 비슷한 면도 없잖아 있는 것 같다. 리눅스 mysql 코딩 등 왜 분리되어 있는 걸까 하는 생각도 든다. 물론 용도가 서로 다르긴 하지만 여기저기 열어놓고 쓰기에는 불편하지 않나?
'나는 이렇게 학습한다 > Etc' 카테고리의 다른 글
자바스크립트 #변수, 스트링, 함수 (0) | 2021.10.30 |
---|---|
리눅스 #디렉토리의 구조 (0) | 2021.09.15 |
리눅스 #IO Redirection (0) | 2021.09.13 |
리눅스 #wget, git, 왜 CLI인가?(순차적으로 실행, 파이프라인) (0) | 2021.09.11 |
리눅스 #sudo, nano, 패키지 매니저(Homebrew) (0) | 2021.09.06 |