목차
옮긴이 머리말 ... 7
머리말 ... 23
제1장 유닉스 쉘 소개
   1.1 정의와 기능 ... 27
      1.1.1 세 가지 주요 유닉스 쉘 ... 28
      1.1.2 리눅스 쉘 ... 29
      1.1.3 쉘의 역사 ... 30
      1.1.4 쉘 사용 ... 31
      1.1.5 쉘의 역할 ... 32
   1.2 시스템 시동과 로그인 쉘 ... 32
      1.2.1 명령행 분석 ... 33
      1.2.2 명령어 종류 ... 34
   1.3 프로세스와 쉘 ... 35
      1.3.1 실행 중인 프로세스 확인 ... 36
      1.3.2 프로세스 생성 ... 36
   1.4 환경과 상속 ... 39
      1.4.1 소유권 ... 41
      1.4.2 파일 생성 마스크 ... 42
      1.4.3 chmod를 이용한 권한 변경 ... 42
      1.4.4 chown 명령어를 이용한 소유권 변경 ... 44
      1.4.5 쉘과 시그널 ... 52
   1.5 스크립트를 통한 명령어 실행 ... 52
      1.5.1 예제 스크립트 : 세 가지 쉘 비교 ... 54
      1.5.2 C쉘 스크립트 ... 54
      1.5.3 본 쉘 스크립트 ... 56
      1.5.4 콘 쉘 스크립트 ... 57
제2장 유닉스 툴박스
   2.1 정규표현식 ... 61
      2.1.1 정의와 용례 ... 61
      2.1.2 정규표현식 메타문자 ... 64
   2.2 정규표현식 메타문자의 조합 ... 71
      2.2.1 기타 정규표현식 메타문자 ... 72
제3장 grep 계열 명령어
   3.1 grep 명령어 ... 77
      3.1.1 grep의 의미 ... 77
      3.1.2 grep의 동작 방법 ... 78
      3.1.3 grep의 종료 상태 ... 81
   3.2 정규표현식을 사용하는 grep의 예제 ... 82
   3.3 grep에 파이프 사용 ... 88
   3.4 grep에 옵션 사용 ... 89
      3.4.1 grep 복습 ... 92
   3.5 egrep ... 93
      3.5.1 egrep 예제 ... 94
      3.5.2 egrep 복습 ... 96
   3.6 고정 grep과 빠른 grep ... 97
   UNIX TOOL LAB EXERCISE ... 98
제4장 sed 편집기
   4.1 sed란? ... 101
   4.2 sed의 동작 ... 102
   4.3 주소 지정 ... 102
   4.4 명령어와 옵션 ... 103
   4.5 에러 메시지와 종료 상태 ... 105
      4.5.1 메타문자 ... 106
   4.6 sed 예제 ... 107
      4.6.1 출력 : p 명령어 ... 107
      4.6.2 삭제 : d 명령어 ... 108
      4.6.3 치환 : s 명령어 ... 110
      4.6.4 행의 선택 범위 : 쉼표(,) ... 112
      4.6.5 다중 편집 : e 명령어 ... 114
      4.6.6 파일로부터 읽기 : r 명령어 ... 114
      4.6.7 파일로 쓰기 : w 명령어 ... 115
      4.6.8 붙이기 : a 명령어 ... 116
      4.6.9 삽입 : i 명령어 ... 117
      4.6.10 다음 : n 명령어 ... 117
      4.6.11 변환 : y 명령어 ... 118
      4.6.12 종료 : q 명령어 ... 119
      4.6.13 임시 버퍼 사용 : h와 g 명령어 ... 119
      4.6.14 홀드 스페이스와 교환 : h와 x 명령어 ... 123
   4.7 sed 명령어 ... 123
      4.7.1 sed 스크립트 예제 ... 124
      4.7.2 복습 ... 127
   UNIX TOOL LAB EXERCISE ... 128
제5장 awk 유틸리티 : awk 사용의 기초
   5.1 awk란? ... 131
      5.1.1 awk의 어원 ... 131
      5.1.2 awk의 버전 ... 132
   5.2 awk의 형식 ... 132
      5.2.1 파일로부터의 입력 ... 133
      5.2.2 명령어로부터의 입력 ... 134
   5.3 출력 서식 지정 ... 135
      5.3.1 print 함수 ... 135
      5.3.2 OFMT 함수 ... 137
      5.3.3 printf 함수 ... 137
   5.4 파일을 이용한 awk 명령어의 사용 ... 140
   5.5 레코드와 파일 ... 141
      5.5.1 레코드 ... 141
      5.5.2 필드 ... 143
      5.5.3 필드 구분자 ... 144
   5.6 패턴과 동작 ... 146
      5.6.1 패턴 ... 146
      5.6.2 동작 ... 147
   5.7 정규표현식 ... 149
      5.7.1 match 연산자 ... 150
   5.8 스크립트 파일에서 awk 명령어 사용 ... 151
   5.9 복습 ... 152
      5.9.1 간단한 패턴 검색 ... 153
      5.9.2 간단한 동작 ... 154
      5.9.3 패턴과 동작의 조합에서 정규표현식 사용 ... 157
      5.9.4 입력 필드 구분자 ... 160
      5.9.5 awk 스크립트 ... 162
   UNIX TOOL LAB EXERCISE ... 164
제6장 awk 유틸리티 : awk 프로그램의 구조
   6.1 비교식 ... 165
      6.1.1 관계 연산자 ... 165
      6.1.2 조건식 ... 166
      6.1.3 산술 계산 ... 167
      6.1.4 복합 패턴 ... 168
      6.1.5 범위 패턴 ... 169
      6.1.6 데이터 검증 프로그램 ... 170
   6.2 복습 ... 171
      6.2.1 동일성 검사 ... 171
      6.2.2 관계 연산자 ... 172
      6.2.3 논리 연산자 ... 174
      6.2.4 not 논리 연산자 ... 175
      6.2.5 산술 연산자 ... 175
      6.2.6 범위 연산자 ... 178
      6.2.7 조건 연산자 ... 179
      6.2.8 대입 연산자 ... 179
   UNIX TOOL LAB EXERCISE ... 181
제7장 awk 유틸리티 : awk 프로그래밍
   7.1 변수 ... 183
      7.1.1 숫자 상수와 문자열 상수 ... 183
      7.1.2 사용자 정의 변수 ... 184
      7.1.3 BEGIN 패턴 ... 188
      7.1.4 END 패턴 ... 189
   7.2 리다이렉션과 파이프 ... 189
      7.2.1 출력 리다이렉션 ... 189
      7.2.2 입력 리다이렉션(getline) ... 190
   7.3 파이프 ... 192
   7.4 파이프와 파일 닫기 ... 193
   7.5 복습 ... 194
      7.5.1 증가 연산자와 감소 연산자 ... 194
      7.5.2 내장변수 ... 196
      7.5.3 BEGIN 패턴 ... 199
      7.5.4 END 패턴 ... 201
      7.5.5 awk 스크립트에 BEGIN과 END 사용 ... 201
      7.5.6 printf 함수 ... 203
      7.5.7 리다이렉션 파이프 ... 204
      7.5.8 파이프 열기와 닫기 ... 205
   UNIX TOOL LAB EXERCISE ... 207
   7.6 조건문 ... 208
      7.6.1 if문 ... 208
      7.6.2 if/else문 ... 208
      7.6.3 if/else문과 else if문 ... 209
   7.7 루프 ... 211
      7.7.1 while 루프 ... 211
      7.7.2 for 루프 ... 211
      7.7.3 루프 제어 ... 212
   7.8 프로그램 제어문 ... 213
      7.8.1 next문 ... 213
      7.8.2 exit문 ... 213
   7.9 배열 ... 214
      7.9.1 결합 배열의 첨자 ... 214
      7.9.2 명령행 인자 처리(nawk) ... 221
   7.10 awk 내장 함수 ... 224
      7.10.1 문자열 함수 ... 224
   7.11 내장 산술 함수 ... 228
      7.11.1 정수 함수 ... 229
      7.11.2 난수 발생기 ... 229
   7.12 사용자 정의 함수(nawk) ... 231
   7.13 복습 ... 233
   UNIX TOOL LAB EXERCISE ... 238
   7.14 기타 사항 ... 240
      7.14.1 고정 필드 ... 240
      7.14.2 파일 묶기와 풀기 ... 242
      7.14.3 복수 행의 레코드 ... 243
      7.14.4 안내장 생성 ... 245
      7.14.5 쉘과의 상호 작업 ... 248
   7.15 복습 ... 249
      7.15.1 string 함수 ... 249
      7.15.2 명령행 인자 ... 253
      7.15.3 입력 읽기(getline) ... 254
      7.15.4 제어 함수 ... 255
      7.15.5 사용자 정의 함수 ... 256
   UNIX TOOL LAB EXERCISE ... 258
제8장 대화형 본 쉘
   8.1 들어가며 ... 259
      8.1.1 쉘 환경 ... 260
      8.1.2 명령행 ... 268
      8.1.3 메타문자(와일드카드) ... 271
      8.1.4 파일이름 치환 ... 271
      8.1.5 변수 ... 275
      8.1.6 인용부호의 사용 ... 289
      8.1.7 명령어 치환 ... 292
      8.1.8 함수의 소개 ... 293
      8.1.9 표준 입출력과 리다이렉션 ... 295
      8.1.10 파이프 ... 300
      8.1.11 here 문서와 입력 리다이렉션 ... 302
   8.2 본 쉘 프로그래밍 ... 304
      8.2.1 쉘 스크립트 작성 절차 ... 304
      8.2.2 사용자 입력 읽기 ... 306
      8.2.3 산술 연산 ... 308
      8.2.4 위치 인자와 명령행 인자 ... 310
      8.2.5 조건 표현과 흐름 제어 ... 316
      8.2.6 case 명령어 ... 331
      8.2.7 루프 명령어 ... 334
      8.2.8 함수 ... 358
      8.2.9 함수와 마침표 명령어 ... 362
      8.2.10 시그널 트래핑 ... 365
      8.2.11 getopts를 이용한 명령행 옵션 처리 ... 372
      8.2.12 eval 명령어와 명령행 해석 ... 379
      8.2.13 쉘 실행 옵션 ... 380
      8.2.14 set 명령어와 옵션 ... 381
      8.2.15 쉘 내장 명령어 ... 382
   BOURNE SHELL LAB EXERCISE ... 384
제9장 대화형 C 쉘
   9.1 대화형 C 쉘 ... 391
      9.1.1 시작하기 ... 392
      9.1.2 쉘 환경 ... 392
      9.1.3 명령행 ... 398
      9.1.4 명령행 히스토리 ... 402
      9.1.5 별명 ... 407
      9.1.6 작업 제어 ... 410
      9.1.7 메타문자 ... 413
      9.1.8 메타문자 전개 ... 415
      9.1.9 리다이렉션과 파이프 ... 421
      9.1.10 변수 ... 430
      9.1.11 특수 변수 ... 439
      9.1.12 명령어 치환 ... 442
      9.1.13 인용부호 ... 445
   9.2 C 쉘 프로그래밍 ... 452
      9.2.1 쉘 스크립트 생성 과정 ... 452
      9.2.2 사용자 입력 읽기 ... 455
      9.2.3 산술 연산 ... 457
      9.2.4 스크립트 디버깅 ... 459
      9.2.5 명령행 인자 ... 462
      9.2.6 조건의 표현과 흐름 제어 ... 463
      9.2.7 루프 ... 482
      9.2.8 루프 제어 명령어 ... 487
      9.2.9 인터럽트 처리 ... 492
      9.2.10 setuid 스크립트 ... 493
      9.2.11 스크립트의 저장 ... 494
      9.2.12 내장 명령어 ... 495
   C SHELL LAB EXERCISE ... 499
제10장 콘 쉘
   10.1 대화형 콘 쉘 ... 505
      10.1.1 시작하기 ... 506
      10.1.2 쉘 환경 ... 506
      10.1.3 프롬프트 ... 511
      10.1.4 검색 경로 ... 513
      10.1.5 명령행 ... 514
      10.1.6 명령행 히스토리 ... 518
      10.1.7 주석 사용과 파일이름 전개 ... 525
      10.1.8 별명 ... 527
      10.1.9 작업 제어 ... 530
      10.1.10 메타문자 ... 531
      10.1.11 파일이름 치환(와일드카드) ... 534
      10.1.12 변수 ... 541
      10.1.13 기타 특수 변수 ... 561
      10.1.14 인용부호 ... 562
      10.1.15 명령어 치환 ... 565
      10.1.16 함수 ... 567
      10.1.17 표준 입출력과 리다이렉션 ... 571
      10.1.18 리다이렉션과 자식 쉘 ... 574
      10.1.19 파이프 ... 574
      10.1.20 here 문서와 입력 리다이렉션 ... 577
      10.1.21 명령어 실행 시간 ... 579
      10.1.22 TMOUT 변수 ... 580
   10.2 대화형 콘 쉘 프로그래밍 ... 580
      10.2.1 쉘 스크립트 작성 절차 ... 580
      10.2.2 사용자 입력 읽기 ... 584
      10.2.3 산술 연산 ... 588
      10.2.4 위치 인자와 명령행 인자 ... 594
      10.2.5 종료 상태 검사와 $? 변수 ... 598
      10.2.6 조건의 표현과 흐름 제어 ... 600
      10.2.7 case 명령어 ... 615
      10.2.8 루프 명령어 ... 618
      10.2.9 배열 ... 641
      10.2.10 함수 ... 644
      10.2.11 typeset 명령어와 함수 옵션 ... 649
      10.2.12 시그널 트래핑 ... 651
      10.2.13 코프로세스 ... 658
      10.2.14 디버깅 ... 662
      10.2.15 getopts를 이용한 명령행 옵션 처리 ... 665
      10.2.16 보안 ... 672
      10.2.17 내장 명령어 ... 672
      10.2.18 콘 쉘 실행 인자 ... 677
   KORN SHELL LAB EXERCISE ... 679
제11장 대화형 배시 쉘
   11.1 배시 쉘 소개 ... 691
      11.1.1 배시의 버전 ... 692
      11.1.2 시작하기 ... 692
      11.1.3 쉘 환경 ... 694
      11.1.4 내장 명령어 set과 shopt를 이용한 배시 옵션 설정 ... 703
      11.1.5 프롬프트 ... 708
      11.1.6 명령행 ... 715
      11.1.7 작업 제어 ... 722
   11.2 명령행 단축키 ... 725
      11.2.1 명령어와 파일이름 완성 ... 725
      11.2.2 히스토리 ... 727
      11.2.3 히스토리 파일의 명령어 사용 ... 728
      11.2.4 별명 ... 741
      11.2.5 디렉토리 스택 ... 743
      11.2.6 메타문자(와일드카드) ... 746
      11.2.7 파일이름 치환(글로빙) ... 746
   11.3 변수 ... 755
      11.3.1 지역변수와 통용범위 ... 757
      11.3.2 환경변수 ... 759
      11.3.3 인용부호 사용 ... 778
      11.3.4 명령어 치환 ... 782
      11.3.5 산술식 전개 ... 785
      11.3.6 전개의 순서 ... 785
      11.3.7 배열(버전 2.x) ... 786
      11.3.8 함수 소개 ... 789
      11.3.9 표준 입출력과 리다이렉션 ... 792
      11.3.10 파이프 ... 798
      11.3.11 here 문서와 입력 리다이렉션 ... 800
      11.3.12 쉘 실행 옵션 ... 801
      11.3.13 set 명령어와 옵션 ... 802
      11.3.14 shopt 명령어와 옵션 ... 804
      11.3.15 쉘 내장 명령어 ... 806
   BASH SHELL LAB EXERCISE ... 809
제12장 배시 쉘 프로그래밍
   12.1 소개 ... 813
      12.1.1 쉘 스크립트 작성 절차 ... 813
   12.2 사용자 입력 읽기 ... 816
      12.2.1 변수(복습) ... 816
      12.2.2 read 명령어 ... 816
   12.3 산술 연산 ... 820
      12.3.1 정수 타입 계산(declare 명령어와 let 명령어) ... 820
      12.3.2 부동소수점 타입 계산 ... 824
   12.4 위치 인자와 명령행 인자 ... 824
      12.4.1 위치 인자 ... 824
      12.4.2 set 명령어와 위치 인자 ... 826
   12.5 조건의 표현과 흐름 제어 ... 830
      12.5.1 종료 상태 ... 830
      12.5.2 test 내장 명령어 ... 831
      12.5.3 if 명령어 ... 837
      12.5.4 if/else 명령어 ... 843
      12.5.5 if/elif/else ... 845
      12.5.6 파일 검사 ... 848
      12.5.7 null 명령어 ... 851
      12.5.8 case 명령어 ... 853
   12.6 루프 명령어 ... 856
      12.6.1 for 명령어 ... 856
      12.6.2 while 명령어 ... 861
      12.6.3 until 명령어 ... 864
      12.6.4 select 명령어와 메뉴 ... 866
      12.6.5 루프 제어 명령어 ... 871
      12.6.6 I/O 리다이렉션과 자식 쉘 ... 878
      12.6.7 IFS와 루프 ... 882
   12.7 함수 ... 883
      12.7.1 함수 인자와 반환값 ... 885
      12.7.2 함수와 source(또는 dot) 명령어 ... 889
   12.8 시그널 트래핑 ... 892
   12.9 디버깅 ... 898
   12.10 getopts를 이용한 명령행 옵션 처리 ... 900
   12.11 eval 명령어와 명령행 해석 ... 906
   12.12 배시 옵션 ... 908
      12.12.1 쉘 실행 옵션 ... 908
      12.12.2 set 명령어와 옵션 ... 910
      12.12.3 shopt 명령어와 옵션 ... 912
   12.13 쉘 내장 명령어 ... 914
   BASH SHELL LAB EXERCISE ... 917
제13장 대화형 TC 쉘
   13.1 소개 ... 925
      13.1.1 tcsh의 버전 ... 926
      13.1.2 시작하기 ... 926
   13.2 TC 쉘 환경 ... 928
      13.2.1 초기화 파일 ... 928
      13.2.2 검색 경로 ... 934
      13.2.3 쉘 프롬프트 ... 936
      13.2.4 명령행 ... 940
   13.3 명령행 단축키 ... 944
      13.3.1 히스토리 ... 944
      13.3.2 내장 명령행 편집기 ... 954
      13.3.3 명령어, 파일이름, 변수 완성 ... 962
      13.3.4 디렉토리 스택 활용 ... 971
      13.3.5 철자 교정 ... 974
      13.3.6 별명 ... 975
   13.4 작업 제어 ... 979
      13.4.1 백그라운드 작업 ... 980
      13.4.2 포그라운드 명령어와 백그라운드 명령어 ... 982
      13.4.3 작업 스케줄링 ... 983
   13.5 메타문자 ... 984
      13.5.1 파일이름 치환 ... 985
   13.6 리다이렉션과 파이프 ... 991
      13.6.1 입력 리다이렉션 ... 992
      13.6.2 here 문서 ... 993
      13.6.3 출력 리다이렉션 ... 995
   13.7 변수 ... 1000
      13.7.1 변수 값 출력 ... 1002
      13.7.2 지역변수(통용범위와 명명규칙) ... 1006
      13.7.3 환경변수 ... 1008
   13.8 배열 ... 1011
      13.8.1 배열이란? ... 1011
   13.9 특수 변수와 변수 변경자 ... 1015
      13.9.1 경로이름 변수 변경자 ... 1017
      13.9.2 대소문자 변경자 ... 1018
   13.10 명령어 치환 ... 1019
      13.10.1 백코우트 ... 1019
   13.11 인용부호 ... 1022
      13.11.1 역슬래시 ... 1023
      13.11.2 작은따옴표 ... 1024
      13.11.3 큰따옴표 ... 1025
      13.11.4 따옴표의 다양한 사용 ... 1026
      13.11.5 올바른 따옴표 사용을 위한 충고 ... 1027
      13.11.6 따옴표 변수 ... 1028
   13.12 내장 명령어 ... 1030
      13.12.1 특수 별명 ... 1038
      13.12.2 특수 내장 쉘 변수 ... 1039
   TC SHELL LAB EXERCISE ... 1047
부록 A 자주 쓰이는 유닉스 명령어 ... 1051
부록 B 쉘 기능 비교 ... 1093
   B.1 쉘 기능 비교 ... 1093
   B.2 TC 쉘 vs C 쉘 ... 1094
   B.3 배시 쉘 vs 본 쉘 ... 1094
부록 C 올바른 인용부호 사용 순서 ... 1101
   C.1 역슬래시 ... 1101
   C.2 작은따옴표 ... 1101
   C.3 큰따옴표 ... 1102
   C.4 쉘 변수 설정 ... 1103
부록 D 실전 쉘 스크립트 ... 1105
   D.1 로그파일 검사 후 지정 사용자에 메시지 출력 ... 1106
   D.2 편집기 실행 전 지정 위치에 대상 파일 복사본 만들기 ... 1107
   D.3 데이터베이스에 접속하여 전일자 구하기 ... 1108
   D.4 작업 결과를 html 파일로 저장하기 ... 1109
   D.5 데몬 및 백그라운드 프로그램 실행 여부 검사 ... 1111
   D.6 FTP 파일 전송 자동화 ... 1111
찾아보기 ... 1113
부록 CD 안내 ... 1128
닫기