*22년 3월 29일~4월 10일 학습한 생활코딩 리눅스 강의 정리본입니다.
- 운영체제 시간에 하드웨어-커널-셸의 연관관계에 대해 배웠다. 리눅스도 유닉스 기반의 운영체제이기 때문에 이런 내용이 나와서 너무 반가웠다. 드디어 제대로 아는 내용! ㅎㅎ
- 우선 셸은 커널에 명령어를 전달하기 위한 일종의 인터페이스이다. 사용자 편의를 위해 다양한 셸을 지원하며 커널에 명령어를 직접 전달하기 위해 반드시 거쳐야 하는 껍데기다.
그렇다면 리눅스에서의 shell은 어떤 형태일까? shell은 인터페이스인데 사실 일반적으로 생각하는 인터페이스는 게임에서의 ui정도...? 적어도 내 머리로는 그랬다.
- 리눅스의 shell의 대표격인 bash는 내가 지금 사용하고 있는 터미널의 shell이다.
- zsh는 별도로 설치하여 *(sudo apt-get install zsh) 사용할 수 있는 shell이다.
- 사용성에 약간의 차이가 존재했다.
zsh가 편의성 부분이 더 뛰어나 보였지만 초심자인 내 기준으로 둘 다 거기서 거기였다. 그래서 수업을 따라가기로 결정. bash를 사용하고 있다.
사실 이 shell이라는게 게임ui와 비슷한 맥락같긴 하다. 사용자에게 어떻게 보여지는지에 대해 다루고 있기 때문이다.
이 부분은 일종의 언어 강의로 범위를 벗어나기 때문에 맛보기만...! 했다ㅎ 아래의 코드는 bak이라는 디렉토리가 없으면 bak 디렉토리를 생성한 뒤에 현재 디렉토리에 있는 모든 log확장자 파일을 bak 디렉토리에 카피하는 문장이다.
#!/bin/bash
if ![ -d bak ]; then
mkdir bak
fi
cp *.log bak
참고로 이렇게 작성된 파일을 실행시키기 위해서는 권한을 설정해야 한다.
chmod +x backup