커맨드라인 러스트 : cat, grep, ls 등 14가지 유용한 CLI 도구를 클론 코딩하며 배우는 러스트 활용

커맨드라인 러스트 : cat, grep, ls 등 14가지 유용한 CLI 도구를 클론 코딩하며 배우는 러스트 활용

$32.27
저자

켄유엔스-클라크

저자:켄유엔스-클라크
소프트웨어개발자이자교육자및작가.노스텍사스대학교에서학부에들어가재즈(드럼)를연구하다여러번전공을바꿔결국영문학학사를땄다.1990년대중반부터직장에서코딩을배워산업계,학계,비영리단체에서일했다.2019년애리조나대학교에서바이오시스템공학석사학위를받았다.저서로《21개의작고재미난파이썬프로젝트》(제이펍,2021)등이있다.

역자:조성만
넓고얕은IT잡지식을추구하는평범한개발자다.소프트웨어스트리밍,애플리케이션가상화,크로스플랫폼툴킷,웹브라우저기술에관심이많다.다음마이피플,네이버웨일,네이버랩스어웨이,클로바페이스사인개발에참여했다.지금은엔씨소프트에서소프트웨어엔지니어로일하고있다.《프로그래밍러스트(개정판)》(제이펍,2023),《레일스와함께하는애자일웹개발(개정판)》(인사이트,2012),《프로페셔널안드로이드2애플리케이션개발》(제이펍,2010)등을우리말로옮겼다.

목차

옮긴이머리말ix
베타리더후기xii
시작하며xiv
감사의글xxii
표지에대하여xxiv

CHAPTER1위험한진실:true와false1
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

CHAPTER2메아리테스트:echo21
2.1echo의작동방식22
2.2시작하기25
__2.2.1명령줄인수에접근하기26/2.2.2clap을의존성으로추가하기29
__2.2.3clap으로명령줄인수파싱하기31/2.2.4프로그램출력생성하기35
2.3통합테스트작성하기40
__2.3.1테스트출력파일생성하기41/2.3.2프로그램출력비교하기43
__2.3.3Result타입사용하기44
2.4clap파생사용하기48
요약51

CHAPTER3캣워크위에서:cat52
3.1cat의작동방식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

CHAPTER4두통:head81
4.1head의작동방식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

CHAPTER5어머니께전할말:wc104
5.1wc의작동방식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

CHAPTER6유일무이의소굴:uniq133
6.1uniq의작동방식134
6.2시작하기139
__6.2.1인수정의하기140/6.2.2프로그램테스트하기143
__6.2.3입력파일처리하기148
6.3설루션150
6.4한걸음더나아가기155
요약156

CHAPTER7주운사람이임자:find157
7.1find의작동방식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

CHAPTER8면도와이발:cut188
8.1cut의작동방식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.3csv::StringRecord에서필드선택하기221/8.3.4끝판왕223
8.4한걸음더나아가기225
요약226

CHAPTER9잭더그레퍼:grep227
9.1grep의작동방식228
9.2시작하기232
__9.2.1인수정의하기233/9.2.2검색할파일찾기240
__9.2.3입력에서매칭되는줄찾기243
9.3설루션248
9.4한걸음더나아가기252
요약253

CHAPTER10보스턴커먼:comm254
10.1comm의작동방식254
10.2시작하기258
__10.2.1인수정의하기259/10.2.2입력파일검증하고열기264
__10.2.3파일처리하기266
10.3설루션268
10.4한걸음더나아가기276
요약277

CHAPTER11테일러스위프트:tail278
11.1tail의작동방식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

CHAPTER12행운아:fortune314
12.1fortune의작동방식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

CHAPTER13라스칼리:cal343
13.1cal의작동방식344
13.2시작하기347
__13.2.1인수정의하고검증하기347/13.2.2프로그램작성하기358
13.3설루션361
13.4한걸음더나아가기366
요약367

CHAPTER14엘에스섬:ls368
14.1ls의작동방식369
14.2시작하기372
__14.2.1인수정의하기373/14.2.2파일찾기377/14.2.3긴목록형식화하기382
__14.2.48진수로된권한표시하기384/14.2.5긴형식테스트하기388
14.3설루션390
14.4테스트작성시참고사항397
14.5한걸음더나아가기400
요약401

에필로그402
찾아보기404

출판사 서평

CLI도구,러스트로다시짭시다
ls나cat같은CLI도구는유닉스환경에서수시로쓰이는명령이다.이런익숙한도구는핵심기능을직접구현하는것이상대적으로그리어렵지는않으므로,새언어를익히기위해클론코딩하기에아주좋은소재다.이점에착안해서cat,grep,ls,echo,head,wc,uniq,find,cut,comm,tail,cal등우리에게친숙한14가지CLI도구를러스트로만들며러스트를진득하게익히는게이책의주요내용이다.
오리지널도구들의작동방식과요구사항을살펴본다음,독자는저자의코드를참고해자신만의러스트‘도전과제’프로그램을만들어본다.어떻게프로그램을시작하고,메인로직을작성하며,테스트를거쳐완성된제품을만드는지,처음부터끝까지익힐수있다.오류처리,파일읽고쓰기,정규표현식,러스트의타입과구조체등을사용하는데에도익숙해질것이다.
이과정에서저자는테스트주도개발(TDD)방식에따라,까다로우면서도친절한러스트컴파일러를십분활용하는좋은러스트개발습관을들이게해준다.빈말이아니라,14개장에걸쳐프로그램을총14개만들게되어있고장마다패턴이비슷하므로책을정독한다면반복학습의효과를톡톡히누릴수있을것이다.
이책의원서는2022년최초출간되었는데,2024년3월에clap크레이트등의최신버전과패턴을도입하고좀더‘러스트다운’코드로가다듬은3쇄가나왔다.본번역서는원서2쇄기반으로출간을앞두고있었으나,3쇄개정소식을듣고눈물을머금고재작업해3쇄내용을모두반영했다.

주요내용
●러스트표준라이브러리및데이터타입을사용해시스템프로그램만들기
●러스트프로그램및함수작성과테스트
●stdin,stdout,stderr을포함한파일읽기및쓰기
●명령줄인수문서화및유효성검사
●우아하게실패하는프로그램작성하기
●원시텍스트및구분된텍스트구문분석
●무작위성의활용및제어