[Shell Programming] 2. Shell

쉘(Shell)과 쉘 스크립트(Shell Scripts)

 

목차

  • 쉘이란?
  • 쉘의 기능들은?
  • 여러 쉘들
  • 하위 쉘들 – 자식 프로세스들
  • 하위 쉘 처리 절차
  • 쉘 스크립트는?
  • 스크립트 작성
  • 프로그래밍 용어
  • 논리적 흐름 제어
  • 쉘 스크립트 예제
  • 정리

 

쉘이란?

  • 컴파일된 프로그램
  • 사용자와 운영체제(커널)간의 인터페이스를 제공
  • 각 사용자를 위해 운영체제는 하나의 쉘 제공
    • 로그인
    • 터미널 실행
    • 콘솔창
  • 컴퓨터의 운영 전반을 제어할 수 있음.
  • 역할 관계

    • 그림과 같이 커널을 접근할 수 있는 시스템 인터페이스들을 사용자 인터페이스 프로그램들이 (System Call로) 접근할 수 있다.

쉘의 기능들은?

  • 명령줄 해석 기능
    • 예) 프로세스 상태를 첫번째 열로 정렬한 결과를 페이지 단위로 확인
      • ps -ef | sort +1 | more
  • 프로그래밍 언어
    • 특정 파일이나 프롬프트의 명령들을 통해서 절차적 언어를 작성할 수 있다.
  • 사용자 환경
    • 환경 설정
      • umask – 생성되는 파일의 접근 기본 권한 설정
      • PATH – 실행 파일을 찾는 경로 설정

여러 쉘들

  • 다양한 쉘들이 존재
  • Bourne Shell(sh)
    • AT&T Bell 연구소의 Steve Bourne에 의해 작성됨
    • 유닉스 쉘의 기원
    • 특징
      • 히스토리 지원
      • 내부 산술식 처리
      • 논리 표현식 처리
    • 보통 위치
      • /bin/sh
      • /sbin/sh
    • 기본 프롬프트 : $
      • root 는 #
  • C Shell(csh)
    • 캘리포니아 버클리 대학에 Bill Joy에 의해 작성됨
    • 특징
      • aliases
      • 명령 history
      • C 문법과 비슷한 구조를 사용
      • 내부 산술 연산 명령들 갖음
    • Bourne Shell 보다 크고 느림
    • 보통 위치
      • /bin/csh
    • 기본 프롬프트 : <hostname> %
      • root 는 <hostname> #
  • Korn Shell(ksh)
    • AT&T Bell 연구소의 David Korn에 의해 작성됨
    • Bourne Shell 기능 모두 제공
    • 추가 기능
      • C Shell의 인터렉티브 특성을 갖음
      • 프로그래밍 편의 기능 제공
        • 내부 산술기능, C와 유사한 배열 사용
        • 함수들
        • 문자열 변환기능
    • C Shell 보다 빠름
    • 보통 위치
      • /bin/ksh
    • 기본 프롬프트 : $
      • root 는 #
  • GNU Bourne-Again Shell(bash)
    • 일명 “배쉬쉘”
    • 리눅스의 기본 쉘
    • 기능
      • Korn 쉘, C 쉘의 유용한 기능들 제공
      • 방향키를 이용한 명령 재호출 및 수정 기능 강화
  • 기타 쉘
    • Desktop Korn Shell(dtksh)
    • Job Control Shell(jsh)
    • Restricted Shell Command Interpreter(rsh)
    • Enhanced C Shell(tcsh)
    • Z Shell(zsh)

하위 쉘들 – 자식 프로세스들

(작성중)

하위 쉘 처리 절차

(작성중)

쉘 스크립트는?

(작성중)

스크립트 작성

(작성중)

프로그래밍 용어

(작성중)

논리적 흐름 제어

(작성중)

쉘 스크립트 예제

(작성중)

정리

(작성중)

 

[Shell Programming] 1. Intro

쉘 프로그래밍에 대해서 따라해볼 내용을 정리합니다.

주요 환경은 맥, bash 에서 시작합니다.

따라하시며 참고하실 분들은 리눅스나, 유닉스, 맥 등에서 터미널을 열어서 작업할 수 있습니다.

 

주로 다룰 내용

  • 쉘은 무엇인가?(Shells, Shell Scripts)
  • 스크립트 작성과 디버깅(Writing and Debugging Scripts)
  • 쉘 환경(The Shell Environment)
  • 외부 명령
    • grep
    • sed
    • awk
  • 조건 처리(Conditionals)
  • 사용자 입력하기 (Interactive Scripts)
  • 반복 (Loops)
  • 내부 변수(Advanced Variables)
  • 파라미터와 인자 목록(Parameters and Argument List)
  • 함수(Functions)
  • 시그널 처리(Traps)