목차
옮긴이 머리말 ... 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
닫기