Shell script

LeeKyoungChang·2022년 3월 1일
0
post-thumbnail

생활코딩 - Linux 을 듣고 정리한 내용입니다.

 

📚 1. 소개

🔔 SHELL VS KERNEL

  • SHELL : 껍데기, 주변
  • KERNEL : 알맹이, 핵심, 코어

kernel

사진 참고

 

✔️ SHELL

  • 사용자가 입력한 명령을 해석하는 프로그램
  • ls -al : SHELL에 명령을 입력하는 것이다.
  • 입력한 명령을 해석해서 커널이 이해할 수 있는 방식으로 커널에 전달한다.
  • 커널 직접 제어가 어려워, 이해하기 쉬운 형태 명령어를 입력하면 쉘에 해당되는 프로그램들이 해석해서 커널에 전달해준다.

 

✔️ Kernel

  • 기계가 동작하면서 처리결과를 커널에 전달하여 쉘에 전달된다.
  • Linux 운영 체제(OS)의 주요 구성 요소이며 컴퓨터 하드웨어와 프로세스를 잇는 핵심 인터페이스이다.
  • OS 내에 위치하고 전화기, 노트북, 서버 또는 컴퓨터 유형에 관계없이 하드웨어의 모든 주요 기능을 제어하기 때문에 붙은 이름이다.
  • 4가지 기능
    • 메모리 관리 : 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적한다.
    • 프로세스 관리 : 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지를 결정한다.
    • 장치 드라이버 : 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할을 수행한다.
    • 시스템 호출 및 보안 : 프로세스의 서비스 요청을 수신한다.

 

📚 2. bash vs zsh

zsh : zsh 실행
echo $0 : zsh 출력

스크린샷 2022-03-01 오전 10 11 03
  • 쉘이 동작하는 상태
  • 입력하는 명령들은 z-shell 통해서 커널로 전달되고 있다.
  • 커널에서 만들어진 결과는 z-shell을 통해서 화면에 표시되고 있다.

 

✔️ zsh에서 사용방법

  • zsh에서는 cd /u/l/d → (tab 키를 누를시) cd /user/leekyoungchang/desktop으로 변경된다.

  • 현재 경로가 /user/dir1 일 때, /user/dir2 로 이동하려면 : cd dir1 dir2 입력한다.

 

📚 3. Shell Script

순차적으로 실행해야하는 명령어 순서를 어딘가에 적어놓고 나중에 재사용할 때 (긴 명령어, 복잡한 명령어를 한 곳에 저장해둔다.)

  • touch : 파일 생성
  • *.log : 확장자가 모두 .log인 파일들 가리킨다.
스크린샷 2022-03-01 오전 11 00 12

 

  • cp *.log bak : 있는지 없는지 체크, 없다면 만들고 있다면 만들지 않는다.

 

스크린샷 2022-03-01 오전 11 02 30

 

📚 4. Shell example

ls /bin : 기본 프로그램들이 위치한 디렉터리

스크린샷 2022-03-01 오전 11 06 46

 

스크린샷 2022-03-01 오전 11 15 45
  • #!/bin/bash : 밑에 작성된 코드들이 /bin/bash을 통해 해석된다.
  • -d : 디렉터리가 존재하는지 확인
  • if ! [ -d bak ]; then : 현재 디렉터리에 bak라는 디렉터리가 존재하지 않는다면
    • 디렉터리가 없다면 만든다.
  • fi : if문 종료
  • cp *.log bak : .log인 파일들을 bak로 복사한다.

 

스크린샷 2022-03-01 오전 11 15 09
  • 현재는 실행 권한이 없다 라고 나온다.

 

chmod + x : 해당 파일에 실행 권한을 준다.

스크린샷 2022-03-01 오전 11 17 48
  • 이제 nano에서 입력한 명령어들을 실행할 수 있다.

 

스크린샷 2022-03-01 오전 11 23 14
  • bak이라는 디렉터리 생성
  • bak 디렉터리 안에는 a.log, b.log, c.log가 있다.

 

bak디렉터리에서 c.log를 삭제후 ./backup을 하였을 때 삭제된 c.log를 새로 생성한다.

스크린샷 2022-03-01 오전 11 24 22

 

✔️ 쉘 스크립트란?

  • 쉘에서 실행될 스크립트, 명령어들이 실행되어야 하는 순서을 저장해놓은 파일이다.
  • #!/bin/bash : 스크립트 파일이 bash 쉘로 실행시킨다는 의미이다. (tcsh쉘로 실행시킬시, #!/bin/tcsh로 시작해야 한다.)
  • ./backup : 현재 디렉터리에 있는 backup을 실행한다.

 


참고

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글