공룡호가 사는 세상 이야기

요즘 괜찮은 아티클이 많이 올라온다.
셸 스크립트. 유닉스의 꽃이라 해도 과언이 아닐 정도로 필요하고, 유용하고, 멋지다.
예전에 도스(DOS)를 이용해 본 사람이라면, 확장자가 'bat'로 되어 있는 batch 파일을 알고 있을 것이다. 스크립트라는 말에서 느낄 수 있듯, 프로그램 언어와 배치파일 사이에 있는 정도라고 이해하면 되겠다.
도스를 몰라도 상관없다. 순차적으로 어떠한 일을 해야 하는데, 그 일이 단순한 반복 작업을 계속해야 한다면, 이를 미리 정의 해 두고, 자동적으로 실행하고 싶다는 생각은 누구나 할 것이다. 비슷하다고 생각하면 이해가 쉽다.

프로그램을 조금 해 보신 분들이라면 syntax만 파악하셔도 될 것 같다. 프로그램 언어를 배우면 가장 먼저 배우게 되는 변수, 표준 입/출력/오류, 함수, if-else, case문 등의 분기분 차례로 튜토리얼이 진행되는데, 평소 셸 스크립트를 한번 공부해보고 싶었거나, 유닉스에 대해 이제 조금 뭔가 알아갈 것 같다. 하시는 분들에게 권한다.

유닉스를 만지면 언젠가는 부딪혀야 하는 셸 스크립트. 잘하든 못하든 일단 다룰 줄은 알아야 될 것이다.
그 기본이 되는 아주 기초적인 문법부터 시작하고 있으며, 생각보다 자세하다.
유의해서 보아야 할 것이 있다면 오류처리 부분. 내가 생각하는 대로 늘 스크립트가 작동할 것이라는 생각은 하지말도록 하자.
1~2시간만 시간을 투자한다면 아래 코드를 이해하고 작성할 수 있게 될 것이다.'

$vi my_second_script.ksh
#!/bin/ksh
###################################################
# 작성자: Jason Thomas
# 목적: 이 스크립트는 첫 스크립트를 개발하는 방법을 보여주기 위해 작성했다.
# 2008년 5월 1일
###################################################

# 변수 정의
HOME="/home/jthomas" # 간단한 홈 디렉터리
DATE=$(date +%H%M) # 콘 셸 명령인 date를 수행한 결과를 DATE에 저장한다.
HOSTNAME=$(hostname) # HOSTNAME은 hostname 명령을 수행한 결과를 저장한다.

##################
function if_error
##################
{
if [[ $? -ne 0 ]]; then # 함수에 전달하는 오류 코드를 점검한다.
    print "$1" # if rc > 0이면 오류 메시지를 출력하고 끝낸다.
exit $?
fi
}
if [[ -e /tmp/file ]]; then  # 먼저 파일이 존재하는지 살펴본다.
   rm -f /tmp/file # 파일 삭제
   if_error "Error: Failed removing file /tmp/file"
else
   print "/tmp/file doesn't exist"
fi

if [[ -e /tmp/test ]]; then
     mkdir /tmp/test # 디렉터리 test 생성
     if_error "Error: Failed trying to create directory /tmp/test"
else
     print "Directory exists, no need to create directory"
fi

case $TIME in
                 "2200")
                  rm -f /tmp/file1
                        ;;
                  "2300")
                  rm -f /tmp/file1
                        ;;
# 스크립트 끝
esac

결론에서도 말하고 있듯, 스크립트 헤더를 작성하고, 변수를 정의한 다음, 오류를 점검하는 순서로 배우도록 하자.
진짜, 익숙해지면 모든 작업을 스크립트로 하려고 들게 된다-_-

링크: http://www.ibm.com/developerworks/kr/library/au-kornshellscripting/

유닉스에서 셸이란 명령줄이라고도 하는데, 운영체제 상에서 다양한 운영체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다. 사용자와 운영체제의 내부(커널) 사이의 인터페이스를 감싸는 층이라는 의미에서 셸 이라는 이름이 붙여졌다. 셸은 그 종류가 다양한데, 그 종류별로 세부적인 기능의 차이들이 조금씩 존재한다. 또한, 셸 스크립트 문법도 조금씩 다른데, 사용자 별로 자신에게 익숙한 셸이 하나씩은 있기 마련이다.

dW에서 소개하고 있는 배시(bash) 셸은 거의 모든 유닉스기반에서 활용 가능한데, 이번 튜토리얼에서는 배시 셸에 대한 간략한 역사, 주요 기능을 다루며, 유닉스 파일시스템, 디렉토리와 파일 조작방법 등을 설명하고 있다.

  • 배시 개괄
  • 배시에서 명령 행 프롬프트로 작업하기
  • 배시에서 파일과 디렉터리 다루기
  • 배시 개인화하기
  • 배시 작업 제어

이 튜토리얼을 읽기 위한 시스템 요구 사항은 없다. 단지 글을 읽고 배시를 익히면 된다. 하지만 이 튜토리얼을 최대로 활용하려면 튜토리얼이 제공하는 기법을 시도할 필요가 있다. 이렇게 하려면 버전 2.05 이상인 동작하는 배시 셸이 필요하다. 컴퓨터에 설치된 배시 셸 버전을 모른다면, 배시 셸 홈 페이지를 방문해 필요한 정보를 얻기 바란다.

원문 보기
http://www.ibm.com/developerworks/kr/library/tutorial/au-dw-au-bash-i.html