대학원 일기

리눅스 셸 스크립트 본문

School/Linux

리눅스 셸 스크립트

대학원생(노예) 2023. 10. 16. 03:44

1. 셸의 기능과 종류

💡 셸은 사용자와 커널 사이에서 중계자 역할을 수행하는 프로그램

하드웨어(CPU, RAM…) → 리눅스 커널 → 셸(명령어 해석기) → 응용 프로그램(excel, ppt…)

  • 셸의 종류
    • 본 셸(Born shell)
      • 명령어: sh
      • 세부 내용
        • 단순하고 처리 속도가 빠른 이유로 많이 사용함
        • 시스템 관리작업을 수행할 때 기반으로 사용함
    • C 셸(C shell)
      • 명령어: csh
      • 세부 내용
        • 본 셸의 기능을 확장함(사용자 편의 기능)
        • 셸 스크립트 작성의 문법 형식이 C언어와 비슷함
        • 다양한 편의 기능으로 인해 크기가 커지고 처리 속도가 느린 이유로 배시 셸에 밀림
    • 콘 셸(Korn shell)
      • 명령어: ksh
      • 세부 내용
        • 본 셸과의 호환성 및 편의 기능을 제공하고 처리 속도가 빠름
        • 우분투 리눅스에서는 별도로 콘 셸을 설치하여 사용해야 함
    • 배시 셸(bash shell)
      • 명령어: bash
      • 세부 내용
        • 본 셸을 기반으로 개발된 셸(본 셸과의 호환성 유지)
        • 사용자 편의 기능 제공
        • **GPL(General Public License)**을 따르는 공개 소프트웨어
        • 리눅스의 기본 셸로 제공
        • GPL이란?(읽어만 봐)
        • 공개 운영체제인 GNU 프로젝트로부터 소프트웨어에 적용되는 라이선스로 많은 사용자들이 소프트웨어를 자유롭게 공유하며 내용을 수정할 수 있도록 보증하는 것을 의미
    • 대시 셸(dash shell)
      • 명령어: dash
      • 세부 내용
        • 본 셸 기반으로 개발
        • 포직스(POSIX) 표준을 준수하여 작은 크기로 개발된 셸
        • 부팅 시 셸 스크립트를 빠르게 실행시키고 파일 크기가 작고, 신뢰성이 높음
        • 우분투 6.10 버전부터 본 셸 대신 대시 셸을 시스템 기본 셸로 사용함

 

  • 셸 스크립트 환경 변수
    • 주요 환경 변수

셸 변수 설정

  • 셸 변수를 선언할 때, “=”을 사용하는데 변수 이름과 문자열 사이에 공백이 존재하면 안됨.

 

환경변수 설정 명령: export

  • export 환경변수=값

 

환경변수를 셸 변수로 변경: export -n

  • export -n 환경변수

셸 변수 해제 : unset

  • 이미 정의된 셸 변수를 해제함
  • unset 변수명

 

 

2. 셸 스크립트의 특징

셸 스크립트의 장단점

  • 장점
    • 다른 프로그래밍 언어보다 훨씬 빠르다.
    • 컴파일을 수행하는 단계가 없다.장점
  •  단점
    • 실행되는 각 명령에 대한 잠재적으로 새로운 하부 프로세스가 수많이 필요하게 됨에 따라 속도가 느려질 수 있다.
    • 복잡한 스크립트는 셸 스크립트 언어의 자체적인 제한영역에서 실행할 수 있지만, 제한으로 인해 다양한 셸이 문제를 개선할 목적으로 고품질의 코드와 확장을 기록하기에는 힘들다.

 

  • 셸 출력 명령(echo & printf)
    • 공동 셸 출력 명령: echo
    • 모든 셸 스크립트 프로그래밍에서 공통적으로 사용할 수 있는 출력 명령

 

  • 출력형식 지정 명령: printf
    • C언어에서 사용하는 출력함수의 형식을 지정하여 출력 가능

 

3. 셸 스크립트 프로그래밍

  • 셸 스크립트 작성과 실행
    • gedit 명령어로 스크립트 작성
  • 변수 선언
    • 변수에 처음 값이 할당되면 변수는 자동으로 생성되므로 변수는 따로 선언하지 않음
    • 셸에서 사용하는 변수는 모두 문자열(String)으로 취급하므로 숫자 또한 문자열로 처리됨
    • 대/소문자 구별
    • 변수에 값 대입시 ‘=’의 좌우에 공백이 존재하면 안됨
      • 대입하는 값 사이 공백이 있을 때는 반드시 큰 따음표(” ”)로 묶어야 함.
      • 위와 같은 값을 변수에 대입할 때는 ‘$변수명’으로 해야함.

숫자 계산

  • 셸 스크립트는 모든 변수를 문자열로 처리하기 때문에, 연산을 수행하기 위해서는 키워드 expr을 사용해야 한다.
  • 연산식을 사용할 때는 역따옴표(`)와 expr을 공백 없이 붙여 사용해야 한다.

 

파리미터 변수

  • ex) 명령어: dnf -y install xinetd
  • 실행한 명령어의 파라미터(매개변수)를 의미

 

  • 조건문과 관계 연산
    • 기본 if 문
      • 조건을 묶는 대괄호 ‘[ ]’ 안에 각 단어와 연산자 사이에 공백이 존재해야 함
    • 주어진 조건이 참(Ture)인 경우에만 수행함.

  • if~else문
    • 기본 if문일 경우, 참 조건에서만 then 이하 명령을 수행함. 거짓 조건의 명령을 수행하기 위해서는 if~else문 사용해야 함.
  • 비교 연산자
    • 문자열 비교 연산자
    • 산술 비교 연산자

 

 

파일 관련 조건

  • 파일의 읽기, 쓰기, 실행이 가능한지 알아보는 파일 관련

 

case~esac문

  • case~esac문은 조건이 많아질 경우 복잡해지는 if~else문의 단점을 해결함.
    • 특정 조건에 해당되면 명령을 수행하는 방식
    • if~else문에 비해 훨씬 간결하고 이해하기 쉬움

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

리눅스 명령어 모음  (1) 2023.10.31
리눅스 디스크 관리  (0) 2023.10.16
리눅스: 소프트웨어 관리  (0) 2023.10.16
리눅스 프로세스 관리  (0) 2023.10.16
리눅스 기본 명령어  (0) 2023.10.16
Comments