셸 스크립트

·2020년 8월 9일
1
post-thumbnail

들어가기 전에 .. 알고 갑시다

커널이란 ?

커널은 프로세스, 메모리, 입출력 시스템, 파일 시스템 등을 관리한다. 즉 운영체제의 핵심 기능을 담당한다.

컴퓨터가 부팅하는 순간 커널 코드가 메모리에 올라가고, 다른 프로그램들과 다르게 항상 메모리에 상주한다. (Memory Resident)

커널은 운영체제의 핵심 기능을 담당하기 때문에 일반 사용자는 커널에 직접 접근할 수 없다. 그래서 간접적으로 커널에서 제공하는 기능을 이용할 수 있도록 System Call을 제공한다. 즉, 커널에 저장되어 있는 함수임에도 불구하고 사용자가 호출할 수 있도록 한다.

System Call은 커널과 사용자 사이의 인터페이스 역할을 한다.

셸이란 ?

이란, 사용자로부터 명령을 입력받아 이를 해석하고 OS가 해당 명령을 수행하도록 하는 프로그램이다. (셸도 하나의 프로그램임!!!) 즉, 사용자와 커널 사이의 인터페이스 역할을 한다.

셸을 사용하면 커널의 복잡한 동작 방식을 알 필요 없이 시스템 자원을 쉽게 관리할 수 있다.

셸의 종류

  • Bourne shell
    • 최초의 셸이다. 많은 셸 스크립트가 Bourne shell 에 기반을 둔다.
  • bash
    • 유닉스 초창기의 bourne shell을 강화한 셸이며, 리눅스에서 가장 많이 사용된다.
    • 명령행 자동완성 기능을 제공한다.
    • history 기능을 제공한다. (⬆️ 누르면 이전 명령어를 쓸 수 있는 기능)
  • zsh
    • 가장 최신 버전이고, 맥 OS의 기본 셸이다. (카탈리나 이후)
    • bash와 호환되기 때문에 bash의 스크립트를 사용할 수 있다.
    • bash보다 자동완성 기능이 더 잘 되어 있다.

  • 터미널에서 echo $0을 입력하면 현재 사용 중인 셸의 종류를 알 수 있다.

  • 터미널 > 환경설정 에서 기본 로그인 셸을 설정할 수도 있다.

ls /bin

  • bin : 유닉스 계열의 컴퓨터에 탑재된 기본 프로그램이 위치하는 디렉토리이다.
  • bash, zsh 뿐만 아니라 echo, mkdir, rmdir 등의 명령어들도 파일의 형태로 존재한다.




놀랍게도 이제부터 본론임..

셸 스크립트

그렇다면 우리는 왜 셸 스크립트를 알아야 하는가? ???? 셸 스크립트는 어떤 경우에 사용될까?

  • 주요 설정파일의 권한 확인

  • 서버 모니터링

  • 개발 환경 셋팅 자동화

    미리 작성해 둔 셸 스크립트 파일을 실행만 하면, 개발 환경을 자동으로 셋팅할 수 있다.

    신입 사원이 들어왔을 때, 이런 프로그램 설치하시고 어쩌구 저쩌구 문서로 넘겨줄 필요가 없음

    우아한 형제들 블로그 참고하세요 ..

  • 작성한 코드를 git에 자동으로 push

함수를 만든다고 생각하면 될 것 같다.
일정한 동작을 하는 스크립트 파일을 만들고, 명령어를 등록해 이 파일을 실행해주세요! 라고 하면, 명령어를 실행할 때마다 해당 파일이 실행된다.
git push 뿐만 아니라 우리가 반복해서 하는 작업들을 자동화할 수 있다는 장점이 있다.

개간단한 셸 스크립트를 작성해보자 ..........................

#!/bin/zsh

cd HEllo
mkdir hi
ls

HEllo 디렉토리로 이동 → hi 라는 디렉토리 생성 → ls (현재 디렉토리에 속한 파일들 보여줌)

실행 결과

hi라는 디렉토리가 만들어진 것을 확인할 수 있다! (ls 명령어를 넣었으니까 바로 나타나는거임)

배열과 반복문을 사용해보자

#!/bin/zsh

array=("myDir" "hello" "dir2")

cd HEllo

for str in "${array[@]}";
do
    echo $str
done

HEllo 디렉토리로 이동 → array의 값들을 하나씩 출력(echo)

실행 결과

기출변형

#!/bin/zsh

array=("myDir" "hello" "dir2")

cd HEllo

for str in "${array[@]}";
do
    mkdir $str
done

ls

아까는 그냥 값들을 출력해줬다면, 이번에는 그 값을 이름으로 하는 디렉토리를 생성해주고 ls

실행결과

  • #!/bin/bash
    • 앞으로 작성될 코드들이 /bin/bash 프로그램을 통해 해석되어야 한다는 뜻
    • 기출변형 : #!/bin/zsh



셸 스크립트로 오만가지 프로그램을 만들 수 있답니다 ..

끝!

profile
이사중.. (티톨버림..)

2개의 댓글

comment-user-thumbnail
2020년 8월 11일

셸에 대해서 몰랐던 내용들 콕콕 찔러주는 좋은 글이네요!ㅎㅎ
잘 읽고 갑니당~

1개의 답글