728x90
반응형
728x90
반응형

11. 쉘과 커널

11.1 Intro

커널(KERNEL)은 알맹이, 핵심, 코어라는 의미를 갖고 쉘(SHELL)은 껍데기,주변 이라는 의미를 가집니다.

쉘은 껍데기처럼 커널을 감싸고 있다고 할 수 있는데요.

쉘에게 명령어를 입력하여 커널이 이해할 수 있는 방식으로 전달해주는 것입니다.

 쉘은 사용자가 입력한 명령을 해석하는 프로그램입니다.

 커널은 하드웨어를 감싸고 있습니다. 물리적인 기계를 직접적으로 제재하는 운영체제에서 가장 중심이 되는 코어입니다.

 하드웨어(ssd, 하드 디스크, cpu, 메모리를 뜻함)는 기계를 동작시켜 원하는 결과를 얻는 일을 합니다.

이렇게 쉘과 커널을 나눈 이유는 사용자의 편리성을 위해서 입니다.




11.2 bash vs zsh

bash와 zsh은 쉘을 대표하는 프로그램입니다.

 · echo [문자] : 문자를 화면에 출력해주는 명령어입니다.

 · echo $0 : 사용하고 있는 쉘을 보여줍니다. 현재는 bash를 사용하고 있습니다.

zsh은 따로 설치를 해야합니다. sudo apt-get install zsh : zsh(지쉘) 프로그램을 설치하는 명령어 입니다.

bash와 zsh은 부모가 같기에 유사한 특성을 가집니다.

하지만 bash와 zsh의 차이가 있는데요.

bash의 경우 

 · cd tab tab : 숨겨진 디렉토리까지 표시됩니다.

 · cd /home/killershin/why : why라는 디렉토리로 들어갑니다.

 · cd why dir1 : why라는 디렉토리 안에 dir1로 들어가고자 할 때 에러가 납니다.

zsh의 경우

 · cd tab : 숨겨진 디렉토리는 표시되지 않습니다.

 · cd /home/killershin/why : why라는 디렉토리로 들어갑니다.

 · cd why dir1 : 에러가 나지 않고 dir1디렉토리로 들어갑니다.

이처럼 사용자가 입력하는 명령어들의 편의성을 각각에 쉘마다 다릅니다.

커널과 쉘을 나눈 이유

-원하는 쉘을 다운 받아 설치하여 자신에게 최적화된 환경을 만들 수 있습니다.



12. 쉘 스크립트

12.1 Shell Script 소개

Script 대본이라는 뜻을 가집니다. 배우들이 움직임의 흐름을 알 수 있는 것이죠.

하나의 명령으로 일이 끝나는 것이 아닌 여러 개의 명령이 순차적으로 이루어 업무가 끝나야 할 때가 있습니다. 

이를 코드로 저장 시킨 것이 쉘 스크립트입니다. 쉘 스크립트를 사용하면 나중에 재사용이 가능하며 복잡한 코드를 필요할 때마다 타이핑 하는 것보다 어딘가에 저장해 불러와 실행시키면 훨씬 편리하겠죠.

쉘에서 실행되는 명령들을 어딘가에 저장하는 방법에 대해 알아보겠습니다.

예를 들어 디렉토리 안에 확장자가 log로 끝나는 파일들을 정기적으로 bak 디렉토리에 백업을 하고 싶은 경우입니다. 명령어 하나하나를 실행시켜 보겠습니다.

 · mkdir script : script 디렉토리를 생성합니다.

 · cd script/ : script 디렉토리로 들어갑니다.

 · touch a.log b.log c.log : 빈 파일들을 생성하는 명령어입니다.

 · ls -l : 로그 파일들이 생성되어 있는지 확인합니다.

 · mkdir bak : bak 디렉토리를 생성합니다.

 · cp *.log bak : 확장자가 log인 모든 파일을 bak디렉토리에 저장하는 명령어입니다.

이를 하나의 스크립트를 만들어 백업하고 싶을 때마다 사용하는 스크립트로 만들면 훨씬 편리할 것 같네요.



12.2 Shell Script 사례

ls /bin : bin 디렉토리에 있는 파일 목록입니다. 기본 프로그램들이 위치하는 곳이죠. 화면에 보이지는 않지만 bash라는 프로그램도 bin 디렉토리에도 

 · nano backup : backup이라는 이름의 파일을 만듭니다.

 · #!/bin/bash : 백업이라는 프로그램을 실행시켰을 때 운영체제는 #!기호를 봅니다.

밑에 작성되는 코드들은 bin디렉토리 밑에 bash라는 프로그램에 해석되어야 한다는 의미입니다.

bash프로그램이 사용하는 문법들을 사용해야겠죠.



쉘 스크립트를 작성해보겠습니다.

디렉토리 안에 확장자가 log로 끝나는 파일들을 정기적으로 bak디렉토리에 백업을 하고 싶은 경우인데요.

조건이 있습니다.

1) 만약 현재 디렉토리에 bak라는 디렉토리가 없다면 만들고 있다면 만들지 않을 것

2) 현재 모든 디렉토리에 있는 파일 중 .log라는 파일을 bak라는 디렉토리에 복사할 것

 · #!/bin/bash

 · if! [ -d bak ]; then : 현재 디렉토리에 bak디렉토리가 존재하지 않는다면

 ·     mkdir bak     :  bak디렉토리를 생성하라.

 · fi : 조건문 종료의 의미를 가집니다.

 · cp *.log bak : bak디렉토리에 확장자가 log인 모든 파일을 저장하라.

 · ctrl+x -> y ->  backup파일이 생성되었습니다



 · ./backup : backup파일을 실행하는 명령어입니다. Permission denied 권한이 없다는 메세지가 뜨네요.

 · chmod +x backup : 실행 가능한 프로그램이라는 것을 리눅스에게 알려주는 명령어입니다.

backup파일에 x를 추가시킨 것입니다.

 · ls -l : backup파일이 초록색으로 변했습니다. -rwxrwxr-x "x"가 생겼습니다. 실행 가능한 상태라는 의미입니다.

 · rm -rf : bak라는 디렉토리를 지우는 명령입니다.

 · ls -l : bak디렉토리가 삭제되었습니다.

 · ./backup : backup파일을 실행합니다

 · ls -l : bak디렉토리가 생성되었습니다.

 · ls -l bak : 3개의 로그 파일이 저장 되었습니다.


 · rm bak/c.log : bak디렉토리에 c.log파일을 삭제합니다.

 · ./backup : backup파일을 실행합니다.

 · ls- l bak : 삭제된 파일 c.log가 다시 저장된 것을 확인할 수 있습니다.




13. 디렉토리의 구조

디렉토리는 실행할 수 있는 프로그램을 정리 정돈하는 수단입니다.

유닉스 계열에서는 실행 프로그램의 성격에 따라 정해져 있는 규칙이 있는데요

/ : 최상위 디렉토리입니다. 루트 디렉토리라고 부릅니다.

/bin : User Binaries, 사용자가 사용하는 명령어들이 위치합니다.

/sbin : System Binaries, 컴퓨터를 끄거나 재부팅하는 명령어들이 위치합니다.

/etc : Configuration Files 설정 파일로, 프로그램이 동작하는 방법을 바꾸고 싶을 때 사용합니다.

/var : Variable Files, 파일의 내용이 증가하거나 어떻게 바뀔지 모르는 파일들이 위치합니다.

/tmp : Temporary Files 일시적인 파일로, 영구적으로 저장하는 파일들을 저장하면 안됩니다.

/home : Home Directories, 자신의 홈 디렉토리에서 작업하기에 홈으로 가야하는 경우 사용됩니다.

/lib : Sytem Libraries

/opt : Optional add-on Applications, 파일 위치를 자동으로 지정합니다.

/user :  사용자의 데이터가 존재하지 않는 공간입니다.


cd ~ : 현재 사용자 디렉토리로 이동하는 명령어입니다. = cd /home/killershin





생활코딩 리눅스 강의



728x90
반응형

'OS > Linux' 카테고리의 다른 글

리눅스 명령어 이해하기6!!  (0) 2017.08.29
리눅스 명령어 이해하기5!!  (0) 2017.08.28
리눅스 명령어 이해하기3!!  (0) 2017.08.26
리눅스 명령어 이해하기2!!  (4) 2017.08.25
리눅스 명령어 이해하기!!  (2) 2017.08.24
728x90
반응형

+ Recent posts