Shell

ppparkta·2022년 3월 30일
0

리눅스

목록 보기
3/7
post-thumbnail

*22년 3월 29일~4월 10일 학습한 생활코딩 리눅스 강의 정리본입니다.

운영체제

kernel과 shell

  • 운영체제 시간에 하드웨어-커널-셸의 연관관계에 대해 배웠다. 리눅스도 유닉스 기반의 운영체제이기 때문에 이런 내용이 나와서 너무 반가웠다. 드디어 제대로 아는 내용! ㅎㅎ
  • 우선 셸은 커널에 명령어를 전달하기 위한 일종의 인터페이스이다. 사용자 편의를 위해 다양한 셸을 지원하며 커널에 명령어를 직접 전달하기 위해 반드시 거쳐야 하는 껍데기다.

그렇다면 리눅스에서의 shell은 어떤 형태일까? shell은 인터페이스인데 사실 일반적으로 생각하는 인터페이스는 게임에서의 ui정도...? 적어도 내 머리로는 그랬다.


bash와 zsh

  • 리눅스의 shell의 대표격인 bash는 내가 지금 사용하고 있는 터미널의 shell이다.
  • zsh는 별도로 설치하여 *(sudo apt-get install zsh) 사용할 수 있는 shell이다.
  • 사용성에 약간의 차이가 존재했다.

zsh가 편의성 부분이 더 뛰어나 보였지만 초심자인 내 기준으로 둘 다 거기서 거기였다. 그래서 수업을 따라가기로 결정. bash를 사용하고 있다.

사실 이 shell이라는게 게임ui와 비슷한 맥락같긴 하다. 사용자에게 어떻게 보여지는지에 대해 다루고 있기 때문이다.


shell script

이 부분은 일종의 언어 강의로 범위를 벗어나기 때문에 맛보기만...! 했다ㅎ 아래의 코드는 bak이라는 디렉토리가 없으면 bak 디렉토리를 생성한 뒤에 현재 디렉토리에 있는 모든 log확장자 파일을 bak 디렉토리에 카피하는 문장이다.

#!/bin/bash
if ![ -d bak ]; then
mkdir bak
fi
cp *.log bak

  • nano로 작성했다. /bin 에서 bash라는 디렉토리를 찾을 수 있는데 bash를 사용한 스크립트를 짤 때 #!/bin/bash는 꼭 필요한 문법인 듯 했다.
  • if문 사용법도 특이했다. if문 종료 시 fi라고 작성하여 if문이 종료된 것을 알려야 된다고 한다. 머리로 받아들이려면 좀 걸릴 것 같다.
  • 그 외 와일드카드도 쓸 수 있고 기본적인 문법은 다른 언어들과 비슷했다.

참고로 이렇게 작성된 파일을 실행시키기 위해서는 권한을 설정해야 한다.

chmod +x backup

  • +x로 x라는 권한을 부여한다. 이렇게 설정하면 ./파일명 을 통해 파일을 실행시킬 수 있다.

profile
겉촉속촉

0개의 댓글