옮긴이 머리말 ix
베타리더 후기 xii
시작하며 xiv
감사의 글 xxii
표지에 대하여 xxiv
CHAPTER 1 위험한 진실: true와 false 1
1.1 시작하기: ‘Hello, world!’ 2
1.2 러스트 프로젝트 디렉터리 구성하기 3
1.3 카고로 프로젝트 만들고 실행하기 4
1.4 통합 테스트 작성하고 실행하기 8
__1.4.1 프로젝트 의존성 추가하기 12 / 1.4.2 프로그램 종룟값 이해하기 13
__1.4.3 프로그램 출력 테스트하기 17 / 1.4.4 프로그램을 이어주는 종룟값 18
요약 19
CHAPTER 2 메아리 테스트: echo 21
2.1 echo의 작동 방식 22
2.2 시작하기 25
__2.2.1 명령줄 인수에 접근하기 26 / 2.2.2 clap을 의존성으로 추가하기 29
__2.2.3 clap으로 명령줄 인수 파싱하기 31 / 2.2.4 프로그램 출력 생성하기 35
2.3 통합 테스트 작성하기 40
__2.3.1 테스트 출력 파일 생성하기 41 / 2.3.2 프로그램 출력 비교하기 43
__2.3.3 Result 타입 사용하기 44
2.4 clap 파생 사용하기 48
요약 51
CHAPTER 3 캣워크 위에서: cat 52
3.1 cat의 작동 방식 53
3.2 시작하기 58
__3.2.1 테스트로 시작하기 58 / 3.2.2 매개변수 정의하기 60
__3.2.3 파일 인수 반복 처리하기 65 / 3.2.4 파일 또는 STDIN 열기 67
__3.2.5 테스트 스위트 사용하기 71
3.3 설루션 75
__3.3.1 파일의 내용을 줄 단위로 읽기 75 / 3.3.2 줄 번호 인쇄하기 76
3.4 한 걸음 더 나아가기 79
요약 80
CHAPTER 4 두통: head 81
4.1 head의 작동 방식 82
4.2 시작하기 85
__4.2.1 인수 정의하기 90 / 4.2.2 입력 파일 처리하기 92
__4.2.3 바이트 읽기 vs. 문자 읽기 94
4.3 설루션 95
__4.3.1 파일의 내용을 한 줄씩 읽기 96 / 4.3.2 파일을 읽는 동안 줄 끝을 유지하기 96
__4.3.3 파일에서 바이트 읽기 98 / 4.3.4 파일 헤더 인쇄하기 101
4.4 한 걸음 더 나아가기 102
요약 103
CHAPTER 5 어머니께 전할 말: wc 104
5.1 wc의 작동 방식 105
5.2 시작하기 110
__5.2.1 파일 반복 처리하기 116
__5.2.2 파일 요소의 수를 세는 함수 작성하고 테스트하기 118
5.3 설루션 121
__5.3.1 파일이나 STDIN의 요소 수 세기 122 / 5.3.2 출력 형식화하기 124
5.4 한 걸음 더 나아가기 130
요약 131
CHAPTER 6 유일무이의 소굴: uniq 133
6.1 uniq의 작동 방식 134
6.2 시작하기 139
__6.2.1 인수 정의하기 140 / 6.2.2 프로그램 테스트하기 143
__6.2.3 입력 파일 처리하기 148
6.3 설루션 150
6.4 한 걸음 더 나아가기 155
요약 156
CHAPTER 7 주운 사람이 임자: find 157
7.1 find의 작동 방식 158
7.2 시작하기 164
__7.2.1 인수 정의하기 165 / 7.2.2 인수의 유효성 검사하기 171
__7.2.3 전부 찾아내기 173
7.3 설루션 175
7.4 조건부 테스트: 유닉스 vs. 윈도우 182
7.5 한 걸음 더 나아가기 184
요약 186
CHAPTER 8 면도와 이발: cut 188
8.1 cut의 작동 방식 189
8.2 시작하기 194
__8.2.1 인수 정의하기 195 / 8.2.2 구분 기호의 유효성 검사하기 201
__8.2.3 위치 목록 파싱하기 요구 사항 203 / 8.2.4 위치 목록 파싱하기 설루션 208
8.2.5 문자 또는 바이트 추출하기 212 / 8.2.6 구분 기호로 분리된 텍스트 파싱하기 214
8.3 설루션 217
__8.3.1 문자열에서 문자 선택하기 217 / 8.3.2 문자열에서 바이트 선택하기 219
__8.3.3 csv::StringRecord에서 필드 선택하기 221 / 8.3.4 끝판왕 223
8.4 한 걸음 더 나아가기 225
요약 226
CHAPTER 9 잭 더 그레퍼: grep 227
9.1 grep의 작동 방식 228
9.2 시작하기 232
__9.2.1 인수 정의하기 233 / 9.2.2 검색할 파일 찾기 240
__9.2.3 입력에서 매칭되는 줄 찾기 243
9.3 설루션 248
9.4 한 걸음 더 나아가기 252
요약 253
CHAPTER 10 보스턴 커먼: comm 254
10.1 comm의 작동 방식 254
10.2 시작하기 258
__10.2.1 인수 정의하기 259 / 10.2.2 입력 파일 검증하고 열기 264
__10.2.3 파일 처리하기 266
10.3 설루션 268
10.4 한 걸음 더 나아가기 276
요약 277
CHAPTER 11 테일러 스위프트: tail 278
11.1 tail의 작동 방식 279
11.2 시작하기 284
__11.2.1 인수 정의하기 284 / 11.2.2 명령줄 인수를 파싱하고 유효성 검사하기 287
__11.2.3 양수와 음수 수치 인수 파싱하기 290
__11.2.4 정규 표현식을 이용해서 정수와 옵션으로 붙는 기호 매칭하기 294
__11.2.5 파일 처리하기 298 / 11.2.6 파일의 전체 줄과 바이트 수 세기 298
__11.2.7 인쇄할 시작 줄 찾기 300 / 11.2.8 인쇄할 시작 바이트 찾기 302
__11.2.9 대용량 입력 파일을 가지고 프로그램 테스트하기 303
11.3 설루션 304
__11.3.1 파일의 전체 줄과 바이트 수 세기 304 / 11.3.2 시작 색인 찾기 305
__11.3.3 줄 인쇄하기 306 / 11.3.4 바이트 인쇄하기 308
__11.3.5 설루션 벤치마크하기 310
11.4 한 걸음 더 나아가기 313
요약 313
CHAPTER 12 행운아: fortune 314
12.1 fortune의 작동 방식 315
12.2 시작하기 319
__12.2.1 인수 정의하기 320 / 12.2.2 입력 소스 찾기 326 / 12.2.3 운세 파일 읽기 330
__12.2.4 무작위로 운세 고르기 332 / 12.2.5 패턴과 매칭되는 레코드 인쇄하기 334
12.3 설루션 335
12.4 한 걸음 더 나아가기 341
요약 341
CHAPTER 13 라스칼리: cal 343
13.1 cal의 작동 방식 344
13.2 시작하기 347
__13.2.1 인수 정의하고 검증하기 347 / 13.2.2 프로그램 작성하기 358
13.3 설루션 361
13.4 한 걸음 더 나아가기 366
요약 367
CHAPTER 14 엘에스 섬: ls 368
14.1 ls의 작동 방식 369
14.2 시작하기 372
__14.2.1 인수 정의하기 373 / 14.2.2 파일 찾기 377 / 14.2.3 긴 목록 형식화하기 382
__14.2.4 8진수로 된 권한 표시하기 384 / 14.2.5 긴 형식 테스트하기 388
14.3 설루션 390
14.4 테스트 작성 시 참고 사항 397
14.5 한 걸음 더 나아가기 400
요약 401
에필로그 402
찾아보기 404