본문 바로가기

도서 소개

아트 오브 셸 원라이너 160제

셸 장인들의 문제를 함께 풀며 커맨드 근육 빌드업

 

도서구매 사이트(가나다순)

[교보문고] [도서11번가] [알라딘] [예스이십사] [인터파크] [쿠팡]

전자책 구매 사이트(가나다순)

교보문고 / 구글북스 / 리디북스 / 알라딘 / 예스이십사

 

출판사 제이펍
저작권사 技術評論社
원서명 1日1問、半年以内に習得 シェル・ワンライナー160本ノック (9784297122676)
도서명 아트 오브 셸 원라이너 160제
부제 텍스트 한 줄의 마법, 파워 유저를 위한 리눅스/유닉스 커맨드
지은이 우에다 류이치, 야마다 야스히로, 다시로 가쓰야, 나카무라 소이치, 이마이즈미 미쓰유키, 우에스기 나오후미
옮긴이 김모세
감수자 (없음)
시리즈 (없음)
출판일 2023. 03. 13
페이지 584쪽
판 형 46배판변형(188*245*27.8)
제 본 무선(soft cover)
정 가 37,000원
ISBN 979-11-92469-73-7 (93000)
키워드 awk, sed, grep, bash, 배시, 리눅스, 유닉스, 스크립트, 펄, JSON
분 야 시스템관리 / 리눅스

 


관련 사이트
아마존 도서 페이지
저작권사 도서 페이지

 

관련 시리즈

■ (없음)

 

관련 포스트

2023.03.03 - [출간 전 책 소식] - 매끈한 커맨드 근육을 만드는 운동 노하우

 

관련 도서

■ (없음)

 

관련 파일 다운로드

■ (없음)

 




강의 보조 자료(교재로 채택하신 분들은 메일(textbook@jpub.kr)을 보내주시면 다음 자료를 보내드립니다.)
■ 본문의 그림과 표

 

미리보기(옮긴이 머리말, 베타리더 후기, 지은이 소개, 이 책에 대하여, 감사의 글, 1장 일부)

 

정오표 페이지
■ (등록되는 대로 링크를 걸겠습니다.)

 

도서구매 사이트(가나다순)

[교보문고] [도서11번가] [알라딘] [예스이십사] [인터파크] [쿠팡]

전자책 구매 사이트(가나다순)

교보문고 / 구글북스 / 리디북스 / 알라딘 / 예스이십사

 

도서 소개

한 줄짜리 텍스트로 비약적인 업무 성과를 내는 셸 원라이너

160개의 극한 문제로 예술의 경지를 경험하다

 

파이썬으로 짜면 수십 줄 걸릴 작업을, 한 줄짜리 스크립트로 처리할 수 있다면 믿어지는가? 셸 명령어 하나하나는 단순한 기능만을 수행하지만, 이들을 조합하면 데이터 가공, 웹 스크레이핑, 시스템 모니터링 등 강력한 작업을 처리할 수 있다. 일본의 셸 장인 6인이 출제한 160개 문제가 담긴 이 책은, 이러한 한 줄짜리 명령 ‘원라이너’ 작성 능력 향상을 목표로 한다.

 

리눅스 환경과 셸 기초를 익히는 데에서 시작해 텍스트, 테이블, JSON/CSV, 날짜/시간, 바이너리 등 데이터를 조작하는 방법을 살펴보고, 나아가 데이터를 가공하고 처리하는 데 필요한 정규표현식, 유니코드, 이미지/날짜/시간 데이터, 통신 프로토콜 지식도 알아본다. 리눅스 환경의 더 깊은 부분, 소스 코드 조작, 데이터 생성, 깃 활용 등 소프트웨어 개발 시 도움이 되는 원라이너도 함께 담았다. 일본어 텍스트를 다루는 문제들은 한국 실정에 맞는 비슷한 문제들을 고안해 교체한 정성도 돋보인다.

 

160개 문제 중에는 실전적인 문제가 있는가 하면, 사고력을 기르기 위한 순수한 (수학) 퍼즐 같은 문제도 있다. 풀이 역시 한 가지가 아니라 생각지도 못한 방식을 포함해 여러 가지를 제시한다. 문제에 대한 해답을 단순히 암기하는 것이 아니라 원리를 생각하고 명령을 조합하는 방식을 훈련해야 한다는 점을 강조하기 때문이다. 이 책과 함께 사고력을 단련해서, 실무에서 예상하지 못한 문제를 만나더라도 해결 방법을 스스로 생각할 줄 아는 개발자가 되어보자.

 

대상 독자

■ 셸 명령어를 예술의 경지로 끌어올려 사용하고 싶은 사람

■ 리눅스/유닉스 파워 유저

■ 시스템 관리자, 서버/네트워크 관리자, 인프라 엔지니어

■ 대학, 기업, 연구소의 연구자

 

지은이 소개

우에다 류이치(上田 隆一) @ryuichiueda

‘셸 예능’이라는 용어를 만든 장본인. 본업은 프로그래밍이 특기(자칭)인 로봇 공학 연구자다. 모 국립 대학의 교직원이자 로봇 축구 경기자였지만, 현장 경험이 없으면 프로그래밍을 논할 수 없다고 판단해 연구를 중단하고 로봇과는 전혀 관계없는 기업 시스템을 만드는 기업에서 4년 반 동안 근무했다. 현재는 지바 공업대학의 준교수다. 기업에서 근무할 때부터 집필 활동을 시작해 셸 예능과 본업 양쪽에서 다수의 책을 썼다. 깃허브(https://github.com/ryuichiueda)에 직접 만든 셸이나 배시 CMS, 원라이너용 파이썬 래퍼인 opy, 기타 로봇용 프로그램을 공개하고 있다.

 

야마다 야스히로(山田 泰宏) @grethlen

셸 예능 커뮤니티에서 활동하는 IT 기술자. 해외에서 이 책의 집필에 참여했다. 깃허브(https://github.com/greymd)에서는 ojichat 저자로 알려졌다. 터미널 멀티플렉서인 Tmux 프로그램의 화면 단위인 pane을 분할할 수 있는 tmux-xpanes를 비롯해, 이 책에서도 사용하는 teip나 Cureutils 등 유용한 CLI 도구를 유지보수하고 있다.

 

다시로 가쓰야(田代 勝也) @papiron

프로그래밍에 좌절한 경험이 있는 IT 계열 엔지니어. 프로그래밍은 루비의 대화식 셸인 pry 등 REPL 환경에서 대화형으로 시행착오를 거치며 연습하는 걸 즐긴다. 시스템의 다양한 조사나 데이터 처리 등을 수행할 때 셸 예능을 무기 삼아 매일 싸우지만 KO 당하는 경우도 많다.

 

나카무라 소이치(中村 壮一) @kunst1080

셸 예능 스터디의 오사카 지부 설립인. 웹 계열 엔지니어의 향기를 풍긴다. 최근에는 VR 공간에서 비주얼 프로그래밍하는 것에 푹 빠졌다.

 

이마이즈미 미쓰유키(今泉 光之) @bsdhack

오래된 유닉스 라이프를 좋아하는 (자칭) 아저씨.

 

우에스기 나오후미(上杉 尚史) @blacknon

보안 업체에서 일하며 특히 터미널 프롬프트에 자신 있다. 한때 집 안에 서버 랙(24U)을 설치하기도 했다. 때때로 블로그(https://orebibou.com)에 포스팅을 올린다. 깃허브(https://github.com/blacknon)에는 TUI의 고 언어용 ssh 클라이언트 등 업무에서 사용할 수 있는 도구를 공개하고 있다.

 

옮긴이 소개

김모세

대학 졸업 후 소프트웨어 엔지니어, 소프트웨어 품질 엔지니어, 애자일 코치 등 다양한 부문에서 소프트웨어 개발에 참여했다. 재미있는 일, 나와 조직이 성장하고 성과를 내도록 돕는 일에 보람을 느끼며, 나 자신에게 도전하고 더 나은 사람이 되기 위해 항상 노력하고 있다. 저서로 《코드 품질 시각화의 정석》(지앤선)이 있고, 옮긴 책은 《핵심만 골라 배우는 젯팩 컴포즈》(제이펍), 《모던 자바스크립트로 배우는 리액트 입문》(한빛미디어), 《애자일 소프트웨어 아키텍트의 길》(에이콘출판사) 등 다수다.

 

차례

옮긴이 머리말 xiii

베타리더 후기 xv

지은이 소개 xviii

이 책에 대하여 xx

감사의 글 xxv

 

PART I 셸과 명령어에 익숙해지기

CHAPTER 1 리눅스 환경

1-1 환경 준비하기 3

1-2 터미널, 셸, 명령어, 파일의 관계 알아보기 4

__연습 001 터미널 사용 5

__연습 002 명령어 중단 7

__연습 003 계산(1 + 1) 8

__연습 004 파일에 저장 10

__연습 005 파일과 디렉터리 조작 12

__연습 006 파일 권한 16

__연습 007 명령어 조사 19

1-3 자주 사용하는 명령어 알아보기 21

__연습 008 sed를 사용한 치환 21

더보기

__연습 009 grep을 사용한 검색 23

__연습 010 grep을 사용한 검색과 추출 25

__연습 011 awk를 사용한 검색과 계산 26

__연습 012 sort와 uniq를 사용한 집계 30

__연습 013 xargs를 사용한 일괄 처리 34

__연습 014 bash를 사용한 메타 프로그래밍 36

1-4 파일 조작하기 38

__연습 015 깃허브에서 저장소 클론 39

__실전 001 파일명 검색 40

__실전 002 이미지 파일 일괄 변환 42

__실전 003 파일명 일괄 변경 45

__실전 004 특정 파일 삭제 49

1-5 awk와 sed에 익숙해지기 51

__실전 005 설정 파일에서 정보 추출 51

__실전 006 터미널에 모양 출력 52

__실전 007 소비세 계산 55

__실전 008 로그 집계 57

__실전 009 로그 추출 60

__실전 010 제목 표기법 변환 62

__실전 011 회의록 정리 63

 

CHAPTER 2 셸 기초

2-1 변수와 제어 구문, 명령어 입출력 조작 파악하기 68

__연습 016 표준 입출력 및 표준 에러 출력 68

__연습 017 셸과 변수 70

__연습 018 문자열 연결과 치환 71

__연습 019 변수를 사용한 계산 73

__연습 020 따옴표와 변수 74

__연습 021 배시의 배열과 연관 배열 77

__연습 022 반복과 종료 상태 80

__연습 023 조건 분기 83

__실전 012 변수 읽기 86

__실전 013 존재하지 않는 파일의 초기화 89

__실전 014 다양한 루프 90

__실전 015 문자 유형 변환 92

2-2 프로세스를 고려해 셸 조작하기 94

__연습 024 프로세스의 이해 95

__연습 025 프로세스의 부모 자녀 관계 97

__연습 026 내부 명령어와 외부 명령어 99

__연습 027 서브셸 사용 101

__연습 028 명령어 치환과 프로세스 치환 102

__실전 016 변수 로컬화 104

__실전 017 명령어를 사용할 수 없을 때의 복사 107

__실전 018 셸 내부 명령어만 사용한 집계 108

__실전 019 셸 기능을 기용한 파일 덮어쓰기 111

2-3 중괄호 확장과 파일 글롭 113

__연습 029 중괄호 확장 113

__연습 030 와일드카드와 파일 글롭 114

__실전 020 셸 기능으로 ls 출력 116

__실전 021 조건이 까다로운 파일 목록 작성 118

__실전 022 더미 FQDN 생성 120

2-4 시그널 이해하고 다루기 122

__연습 031 시그널 조작 122

__연습 032 시그널의 종류 123

__실전 023 다른 셸에 시그널 전송 126

__실전 024 exit 시 파일 삭제 128

__실전 025 pipefail 시의 문제 129

__실전 026 18시가 지나면 퇴근하기 131

2-5 셸 명령어를 사용할 때 이상한 작동이나 기능 다루기 133

__실전 027 인수를 바꿔 명령어 재실행 134

__실전 028 이상한 이름의 디렉터리 다루기 136

__실전 029 셸 스크립트의 에러 체크 137

__실전 030 앞쪽이 일치하는 변수명 140

 

PART II 사고 능력 갈고닦기

CHAPTER 3 문장과 문자

3-1 놀면서 텍스트 다루는 법 익히기 145

__연습 033 펄, 루비 원라이너 145

__연습 034 파이썬 원라이너 149

__연습 035 정규표현식의 종류 152

__연습 036 펄을 사용한 치환 155

__실전 031 대문자로 변환 157

__실전 032 회문 검출 159

__실전 033 회문 여부 판정 161

__실전 034 한자 뒤에 독음 추가 164

__실전 035 7문자 이상의 영대문자 사용 방지 165

__실전 036 괄호 쌍 체크 168

3-2 문장을 조사하고 가공하기 170

__연습 037 줄바꿈 검색과 치환 170

__연습 038 히라가나와 가타카나 변환 172

__연습 039 한자의 독음 변환과 영어로의 번역 174

__연습 040 포맷 변환 176

__실전 037 복사 & 붙여넣기 실수 찾기 177

__실전 038 복잡하게 얽힌 문자 엔티티 참조 179

__실전 039 문장 줄바꿈 181

__실전 040 기타 변환 184

__실전 041 주석 확인 186

__실전 042 순서가 있는 목록 형태 정리 189

__실전 043 문헌 목록 정렬 191

__실전 044 줄바꿈 검색 194

__실전 045 여러 행에 걸친 중복 검색 195

__실전 046 한자 독음 붙이기 198

 

CHAPTER 4 데이터 관리, 집계, 변환

4-1 테이블 형식 데이터 다루기 201

__연습 041 테이블 201

__연습 042 데이터 연결 206

__실전 047 전월 비교 데이터 추가 209

__실전 048 CPU 부하 조사 1 211

__실전 049 CPU 부하 조사 2 212

__실전 050 매출 집계 214

__실전 051 시험 점수 목록 출력 217

__실전 052 집계 형식 변환 219

__실전 053 결측값 보완 221

4-2 까다로운 포맷의 데이터 다루기 223

__연습 043 JSON과 jq 223

__연습 044 이스케이프 문자가 포함된 CSV 취급 228

__실전 054 JSON 파일로부터의 추출 230

__실전 055 JSON 로그 비교 233

__실전 056 비정규 데이터끼리의 결합 236

__실전 057 테이블 레이아웃 형태 정리 241

__실전 058 CSV 파일의 숫자 집계 243

__실전 059 CSV 파일의 열 개수 조사 246

4-3 날짜와 시간 다루기 248

__연습 045 날짜와 시간 계산하기 249

__실전 060 프리미엄 프라이데이 251

__실전 061 지난 주 파일 253

__실전 062 날짜에 법정 공휴일 추가 255

__실전 063 5주차 포함 월 확인 258

__실전 064 세 번째 화요일 나열 261

__실전 065 월별 휴일 수 263

__실전 066 일정 조정 266

__실전 067 요일별 분할 268

__실전 068 유닉스 시각의 한계 270

__실전 069 윤초 272

 

CHAPTER 5 문자 코드와 바이너리

5-1 문자 코드에 친숙해지기 275

__연습 046 n진수 276

__연습 047 아스키코드 279

__연습 048 유니코드와 UTF-8 281

__연습 049 문자 코드 변환 284

__실전 070 엑셀 워크시트 285

__실전 071 문자의 바이트 수 조사 287

__실전 072 이모지 289

__실전 073 압축을 푼 뒤 문자가 깨진 파일명 수정 290

__실전 074 연호 표기 292

__실전 075 아스키 문자 삭제 294

__실전 076 macOS에서 생성한 파일 목록 294

__실전 077 서로 다른 문자 코드의 파일 일괄 검색 296

__실전 078 교육용 기초 한자가 아닌 한자 검출 297

__실전 079 문자 코드 특정 299

5-2 바이너리 다루기 302

__연습 050 문자열 바이너리 해석과 바이트 순서 302

__연습 051 바이너리 파일 조사용 명령어 305

__실전 080 2진수에서 문자열 복원 308

__실전 081 BOM 식별 310

__실전 082 이미지 분할 312

__실전 083 Shift_JIS를 그대로 echo하는 셸 스크립트 315

__실전 084 줄바꿈 코드 식별과 집계 317

__실전 085 문자의 바이너리 평균 검출 320

__실전 086 분수 계산 322

__실전 087 od 출력 복원 325

__실전 088 디지털 워터마킹 해독 327

__실전 089 CTF 331

 

CHAPTER 6 퍼즐

6-1 수학으로 놀아보기 335

__연습 052 정확한 계산 335

__연습 053 소수 337

__연습 054 조합 생성 338

__실전 090 n진수 계산 340

__실전 091 조합 추출 341

__실전 092 지수 계산 342

__실전 093 처음 소수가 되는 시각(연월일시분초) 344

__실전 094 라그랑주 네 제곱수 정리의 부분적 검증 347

__실전 095 그레이 코드 349

6-2 각종 문제 정리하기 352

__실전 096 일정 조율 352

__실전 097 세로 읽기 문자열 검출 354

__실전 098 레코드 분리 357

__실전 099 포커 패 검출 359

__실전 100 끝말잇기 순으로 배열 362

__실전 101 연속하는 알파벳 검출과 약어 표기 364

__실전 102 콰인 367

 

PART III 응용하기

CHAPTER 7 리눅스 환경 조사, 설정 및 활용

7-1 파일과 디렉터리 조사 및 조작하기 373

__연습 055 각종 파일의 저장 위치 374

__연습 056 파일 시스템 377

__연습 057 아이노드 379

__실전 103 ls -l 출력의 2번째 열 380

__실전 104 파일명의 길이의 한계? 382

__실전 105 디스크 사용량 집계 384

__실전 106 특수 권한 386

__실전 107 root가 된 횟수 집계 388

__실전 108 문제를 일으킨 프로세스 해석 391

__실전 109 내용이 같은 파일 검색 394

__실전 110 여러 디렉터리의 파일 수 세기 396

7-2 의사 파일 시스템 사용하기 398

__연습 058 의사 파일 시스템 398

__연습 059 프로세스 치환과 파일 401

__실전 111 평균 부하 조사 402

__실전 112 날짜 얻기 404

__실전 113 현재 디렉터리 조사 406

__실전 114 공유 라이브러리 검색 408

__실전 115 USB 메모리 언마운트 411

__실전 116 디바이스 번호 조사하기 413

__실전 117 USB 연결 및 분리 감시 416

__실전 118 프로세스가 열어둔 파일 조사 418

__실전 119 메모리 맵 표시 419

__실전 120 수수께끼 데이터 조사 422

7-3 시스템 콜 추적하기 425

__연습 060 strace 사용하기 425

__실전 121 파일 경로 추출 427

__실전 122 사용한 프로세스 수 세기 429

__실전 123 계산 시간 해석 433

7-4 각종 조사와 설정 정리하기 436

__실전 124 네트워크 디바이스 목록 437

__실전 125 IP 주소 추가 438

__실전 126 배시 버전 변수 439

__실전 127 터미널 에뮬레이터의 윈도우 크기 441

__실전 128 환경에 따른 grep의 작동 차이 443

__실전 129 실행 파일로부터 문자열 추출 445

7-5 원라이너로 서비스 조작하기 447

__실전 130 인스턴트 웹 서버 447

__실전 131 메일 통지 보내기 451

__실전 132 로그 모니터링 & 알림 453

__실전 133 시스템을 자동으로 종료하기 454

 

CHAPTER 8 소프트웨어 개발에 자주 등장하는 원라이너

8-1 소스 코드와 스크립트 조사 및 형태 정리하기 457

__실전 134 파이썬의 들여쓰기 확인 458

__실전 135 리스프의 괄호 정합성 확인하기 459

__실전 136 함수의 위치 교체 462

__실전 137 코드 형태 정리 464

8-2 데이터 생성하기 467

__연습 061 더미 데이터 생성 467

__실전 138 테스트 케이스 작성 469

__실전 139 URL 나열 471

__실전 140 웹사이트 구조로부터 액세스 로그 생성 473

__실전 141 테이블 정보로부터 더미 데이터 생성 476

__실전 142 비트스쿼팅 479

8-3 깃 저장소 조사 및 조작하기 481

__연습 062 저장소 준비 482

__연습 063 변경된 파일 확인 485

__연습 064 커밋 완료 정보를 활용 487

__연습 065 브랜치와 병합 491

__실전 143 조건에 맞는 파일만 커밋 496

__실전 144 조건에 맞는 파일만 원래대로 되돌리기 497

__실전 145 커밋 빈도 조사 500

__실전 146 오랫동안 병합되지 않은 브랜치 조사 502

 

CHAPTER 9 인터넷과 통신

9-1 인터넷에서 정보 얻기 505

__연습 066 HTML 문장 처리 505

__실전 147 단어 출현 빈도 508

__실전 148 지하철역 목록 작성 510

__실전 149 일기예보 출력 512

__실전 150 온라인 서점 정보 스크레이핑 514

__실전 151 여러 사이트의 정보 연계 517

9-2 통신 관련 조사 및 조작 수행하기 520

__연습 067 이름 결정 520

__연습 068 HTTP 상태 코드 523

__실전 152 네트워크 모니터링 525

__실전 153 telnet 명령어로 HTTP 통신 526

__실전 154 /etc/hosts 사용 조사 529

__실전 155 부정확한 Content-Length 531

__실전 156 여러 IP 주소가 등록된 도메인 533

__실전 157 ping의 패킷 해석 534

__실전 158 패킷을 사용한 OS 추정 537

__실전 159 여러 도메인 조사 539

__실전 160 SSL 인증서 조사 542

 

참고 문헌 546

찾아보기 547

 

제이펍 소식 더 보기(제이펍의 소통 채널에서 더욱 다양한 소식을 확인하세요!)

포스트 유튜브 인스타그램 트위터 페이스북