셸 스크립트 프로그래밍 입문 (유닉스, 리눅스, OS X 환경에서 사용할 수 있는 | 4 판)

셸 스크립트 프로그래밍 입문 (유닉스, 리눅스, OS X 환경에서 사용할 수 있는 | 4 판)

$35.44
Description
이 책은 POSIX 표준 셸 기반으로 작성되어 있고 유닉스 또는 유닉스와 비슷한 프로그래밍 환경에서 셸 프로그램 개발 방법에 대한 설명을 소개한다. 먼저, 셸 프로그램에 많이 사용 중인 유틸리티와 셸의 동작 원리를 설명한다. 또한 다양한 예제를 통해 리눅스의 전반적인 환경과 리눅스 기초 지식을 얻을 수 있다. 그리고 정규 표현식, 셸 사용 방법, 사용자 환경, 매개 변수 전달 방법, 함수 생성 방법, 셸 언어의 버전 차이점도 단계별로 설명한다. 마지막으로 POSIX 셸 환경이 아닌 비표준 셸(Korn 셸, Bash 셸) 기능, 호환성을 살펴본다. 셸 프로그래밍 개발 경험 여부와 상관없이 모두에게 도움이 될 것이다.
게다가 개발 환경과 서버 환경과 상관없이 개발자, 데브옵스, 시스템 엔지니어 모두 POSIX 표준 셸 환경에서 개발할 수 있다.
저자

스티븐코찬

저자스티븐코찬(StephenKochan)은『처음시작하는C프로그래밍』(정보문화사,2015),『오브젝티브-C2.0』(인사이트,2013),『TopicsinCProgramming』(Wiley,1991),『ExploringtheUnixSystem』(PrenticeHall,1992)등유닉스와C언어를다룬베스트셀러의저자및공저자다.이전에는AT&T벨연구소(BellLaboratories)의소프트웨어컨설턴트로일하면서유닉스및C프로그래밍수업을개발하고가르쳤다.

목차

1장.기초내용빠르게살펴보기
__기본커맨드
____날짜와시간출력:date커맨드
____로그인된사용자확인:who커맨드
____문자출력:echo커맨드
__파일작업
____파일출력:ls커맨드
____파일내용출력:cat커맨드
____파일의단어수계산:wc커맨드
____커맨드옵션
____파일복사:cp커맨드
____파일이름변경:mv커맨드
____파일삭제:rm커맨드
__디렉터리에서작업
____홈디렉터리와경로이름
____작업디렉터리출력:pwd커맨드
____디렉터리변경:cd커맨드
____ls커맨드
____디렉터리생성:mkdir커맨드
____특정파일을다른디렉터리로복사
____디렉터리간파일이동
____파일링크:ln커맨드
____디렉터리삭제:rmdir커맨드
__파일이름대체
____별표
____일치하는단일문자
__파일이름의미묘한차이
____파일이름의공백
____기타특이한문자
__표준입력/출력과I/O리디렉션
____표준입력과표준출력
____출력리디렉션
____입력리디렉션
__파이프
____필터
__표준에러
__추가커맨드
____한라인에하나이상의커맨드를입력
____커맨드를백그라운드로실행하기
____ps커맨드
__커맨드요약

2장.셸이란?
__커널과유틸리티
__로그인셸
__셸에커맨드를입력
__셸의책임
____프로그램실행
____변수와파일이름대체
____I/O리디렉션
____파이프라인연결
____환경제어
____인터프리터프로그래밍언어

3장.필요한도구
__정규표현식
____모든문자와일치:마침표(.)
____라인의시작과일치:캐럿(^)
____라인의끝과일치:달러기호($)
____문자집합과일치:[…]구문
____0개이상의문자와일치:별표(*)
____하위패턴의정확한숫자와일치:\{...\}
____일치하는문자저장:\(...\)
__CUT
__PASTE
__sed
__tr
__grep
__sort
__uniq

4장.함께가는여행
__커맨드파일
____주석
__변수
____변수의값출력하기
____정의되지않은변수는널값을가진다
____파일이름대체와변수
____${variable}구문
__내장정수연산

5장.따옴표
__작은따옴표
__큰따옴표
__역슬래시
____역슬래시를사용해여러라인에걸쳐커맨드실행하기
____큰따옴표내의역슬래시
__커맨드대체
____역따옴표
____$(...)구문
____expr커맨드

6장.매개변수전달하기
__$#변수
__$*변수
__전화번호부에서특정인물을찾는프로그램
__전화번호부에특정인물을추가하는프로그램
__전화번호부에서특정인물을삭제하는프로그램
____${n}
__shift커맨드

7장.결정,결정
__종료상태
____$?변수
__test커맨드
____문자열연산자
____test에대한대체형식
____정수연산자
____파일연산자
____논리부정연산자!
____논리AND연산자-a
____괄호
____논리OR연산자-o
__else구문
__exit커맨드
____rem프로그램다시살펴보기
__elif구문
____rem의다른버전
__case커맨드
____특수패턴매칭문자
____프로그램을디버깅할수있는-x옵션
____case살펴보기
__널커맨드:
__&&와||구문

8장.루프
__for커맨드
____$@변수
____리스트없는for
__while커맨드
__until커맨드
__루프더살펴보기
____루프에서나가기
____루프에서나머지커맨드건너뛰기
____백그라운드로루프실행하기
____루프에서의I/O리디렉션
____루프안팎으로데이터를파이프로연결하기
____한라인에서루프실행하기
__getopts커맨드

9장.데이터를읽고출력하기
__read커맨드
____파일을복사하는프로그램
____문자를이스케이프처리하는특별한echo
____mycp를개선한버전
____mycp의최종버전
____메뉴로구동되는전화번호부프로그램
____$$변수와임시파일
____read의종료상태
__printf커맨드

10장.사용자환경
__지역변수
____서브셸
__export변수
____export-p
__PS1과PS2
__HOME
__PATH
__현재디렉터리
____CDPATH
__서브셸의추가정보
____.커맨드
____exec커맨드
____(...)와{...;}구문
____서브셸에변수를전달할수있는다른방법
__.PROFILE파일
____term변수
____TZ변수

11장.매개변수더살펴보기
__매개변수대체
__$0변수
__set커맨드
__IFS변수
__READONLY커맨드
__unset커맨드

12장.미진한부분살펴보기
__eval커맨드
__wait커맨드
____$!변수
__trap커맨드
____매개변수없는trap
____시그널무시하기
____trap을재설정하기
__I/O추가정보
____<&-와>&-
____인라인입력리디렉션
____셸아카이브
__함수
____함수정의제거
____return커맨드
__type커맨드

13장.rolo수정
__데이터형식에대한고려사항
__rolo
__add프로그램
__lu프로그램
__display프로그램
__rem프로그램
__change프로그램
__listall프로그램
__예시결과

14장.대화식및비표준셸기능
__올바른셸얻기
__ENV파일
__커맨드라인편집
__커맨드히스토리
__vi라인편집모드
____히스토리에서커맨드접근하기
__emac라인편집모드
____커맨드히스토리의커맨드에접근하기
__커맨드히스토리에접근할수있는또다른방법
____history커맨드
____fc커맨드
____r커맨드
__함수
____지역변수
____자동으로로드되는함수
__정수산술연산
____정수타입
____여러진수의숫자
__alias커맨드
____앨리어스삭제하기
__배열
__작업제어
____멈춰진작업과fg및bg커맨드
__기타기능
____cd커맨드의기타기능
____물결표대체
____검색순서
__호환성요약

출판사 서평

★이책에서다루는내용★
■유닉스시스템에서제공되는많은유틸리티활용하기
■강력한셸스크립트작성법
■셸의내장의사결정구문과루프구문사용
■셸의강력한따옴표메커니즘사용
■셸의내장히스토리와커맨드편집기능최대한활용하기
■유닉스커맨드에정규표현식사용하기
■Korn셸과Bash셸의특수기능활용
■셸언어의버전간의주요차이점확인
■유닉스시스템이사용자에응답하는방식사용자정의하기
■셸환경설정
■여러함수사용하기
■스크립트디버깅

★이책의구성★
이책은사용자가시스템과커맨드라인의기본사항을잘알고있다고가정한다.즉,로그인방법을알고있어야할뿐아니라파일의생성,편집,삭제방법과디렉터리로작업하는방법을알고있다고가정한다.
리눅스또는유닉스시스템을사용한적이없다면1장,‘기초내용빠르게살펴보기’에서기본적인내용을살펴본다.또한1장에서파일이름대체,I/O리디렉션,파이프도살펴본다.
2장,‘셸이란?’에서는셸의실제개념과동작원리를설명하고,운영체제와상호작용하는주요방법이어떻게끝나는지보여준다.시스템에로그인할때마다무슨일이발생하는지살펴보고셸프로그램이시작되는방법,커맨드라인을구문분석하는방법,다른프로그램을실행하는방법을다룬다.
3장,‘필요한도구’에서는셸프로그램작성에유용한툴을설명한다.3장에서다루는커맨드는cut,paste,sed,grep,sort,tr,uniq다.틀림없이해당커맨드의선택은주관적이지만이책의모든부분에서개발할프로그램에서사용된다.또한3장에서는sed,grep,ed와같은많은유닉스커맨드에서사용되는정규식에대해자세히설명한다.
4장에서9장까지는프로그램작성에도움을주는셸의사용방법을설명한다.즉,커맨드를직접작성하는방법,변수를사용하는방법,매개변수를받을수있는프로그램을작성하는방법,결정하는방법,셸의for,while,until과루프커맨드를사용하는방법,read커맨드를사용해터미널또는파일에서데이터를읽는방법을다룬다.
5장,‘따옴표’에서는셸의가장흥미로운부분중하나인따옴표를해석하는방식에대해장전체에걸쳐다룬다.
이책의9장까지셸의모든기본프로그래밍구조를다루기때문에여러분은특정문제를해결할수있는셸프로그램을작성할수있다.
10장,‘사용자환경’에서는매우중요한주제로셸이작동하는방식인환경(environment)을설명한다.지역변수,export변수와서브셸,그리고HOME,PATH,CDPATH같은특수한셸변수와.profile파일을설정하는방법을살펴본다.
11장,‘매개변수더살펴보기’와12장,‘미진한부분살펴보기’에서는일부미진한부분을살펴보고13장,‘rolo수정’에서는책전체에걸쳐개발된rolo라는전화번호부프로그램의최종버전을제공한다.
14장,‘대화식및비표준셸기능’에서는공식적으로IEEEPOSIX표준셸의일부가아니거나(대부분의유닉스및리눅스셸에서는사용할수있음)프로그램대신대화식으로사용되는셸의기능에대해설명한다.
이책의철학은예시를통해가르치는것이다.우리는특정기능의사용방법을많은말로써설명하는것보다적절하게선택된예시를통해설명하는것이여러분이이해하는데훨씬효과적이라고믿는다.‘천마디말보다한번보는게더낫다.’라는오래된격언은코딩에도적용되는것같다.
여러분의시스템에서모든예시를입력하고테스트해보길권한다.테스트를진행하면서셸프로그래밍을숙달할수있어야한다.실험하는것을두려워하지말라.프로그램예시에서커맨드를변경해커맨드의결과를확인하거나다른옵션또는기능을추가해프로그램을좀더유용하고견고하게만들어보자.