한 줄짜리 텍스트로 비약적인 업무 성과를 내는 셸 원라이너
160개의 극한 문제로 예술의 경지를 경험하다
파이썬으로 짜면 수십 줄 걸릴 작업을, 한 줄짜리 스크립트로 처리할 수 있다면 믿어지는가? 셸 명령어 하나하나는 단순한 기능만을 수행하지만, 이들을 조합하면 데이터 가공, 웹 스크레이핑, 시스템 모니터링 등 강력한 작업을 처리할 수 있다. 일본의 셸 장인 6인이 출제한 160개 문제가 담긴 이 책은, 이러한 한 줄짜리 명령 ‘원라이너’ 작성 능력 향상을 목표로 한다.
리눅스 환경과 셸 기초를 익히는 데에서 시작해 텍스트, 테이블, JSON/CSV, 날짜/시간, 바이너리 등 데이터를 조작하는 방법을 살펴보고, 나아가 데이터를 가공하고 처리하는 데 필요한 정규표현식, 유니코드, 이미지/날짜/시간 데이터, 통신 프로토콜 지식도 알아본다. 리눅스 환경의 더 깊은 부분, 소스 코드 조작, 데이터 생성, 깃 활용 등 소프트웨어 개발 시 도움이 되는 원라이너도 함께 담았다. 일본어 텍스트를 다루는 문제들은 한국 실정에 맞는 비슷한 문제들을 고안해 교체한 정성도 돋보인다.
160개 문제 중에는 실전적인 문제가 있는가 하면, 사고력을 기르기 위한 순수한 (수학) 퍼즐 같은 문제도 있다. 풀이 역시 한 가지가 아니라 생각지도 못한 방식을 포함해 여러 가지를 제시한다. 문제에 대한 해답을 단순히 암기하는 것이 아니라 원리를 생각하고 명령을 조합하는 방식을 훈련해야 한다는 점을 강조하기 때문이다. 이 책과 함께 사고력을 단련해서, 실무에서 예상하지 못한 문제를 만나더라도 해결 방법을 스스로 생각할 줄 아는 개발자가 되어보자.
대상 독자
- 셸 명령어를 예술의 경지로 끌어올려 사용하고 싶은 사람
- 리눅스/유닉스 파워 유저
- 시스템 관리자, 서버/네트워크 관리자, 인프라 엔지니어
- 대학, 기업, 연구소의 연구자
카드뉴스로 보는 책
책소개
간단한 셸 명령이라도 조합하는 방식에 따라 강력한 무기가 될 수 있다. 이 책은 160개 원라이너(한 줄짜리 명령) 문제를 통해 독자가 기본적인 셸 문법과 기능을 익히고 대량의 텍스트/JSON/CSV/바이너리 데이터를 조작하는 방법을 배울 수 있게 했다. 데이터를 가공하고 처리하는 데 필요한 OS, 정규표현식, 유니코드, 이미지/날짜/시간 데이터, 통신 프로토콜 지식도 살펴본다. 문제를 반복해서 풀고 명령을 조합하는 법을 훈련함으로써, 실무 문제를 직접 해결할 사고력을 기를 수 있다
- 책의 일부 내용을 미리 읽어보실 수 있습니다. 미리보기
목차
베타리더 후기 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
상세 이미지
너무나도 중요한 소식 블로그 (클릭)
너무나도 중요한 소식 ebook (클릭)
systrader79의 마크다운으로 pdf 전자책 만들기 (클릭)
systrader79의 카카오톡 채널 바로 가기 (클릭)
1. 네이버 카페 '실전주식투자연구소' 로 오시면, 본 블로그의 모든 내용을 카테고리별로 정렬하여 순서대로 확인하실 수 있고, 다양한 실전 투자 정보도 얻을 수 있습니다~
2. 자타가 공인하는 주식 단기 시스템 트레이딩의 최고 전략가, '닥터 퀀트의 단기 트레이딩 강좌'가 뉴지스탁에서 진행중입니다. 닥터 퀀트의 강좌에서는 그동안 공개하지 않았던 무려 50개 이상의 실전 트레이딩 전략과 주기적인 업데이트 강의가 제공됩니다~
3. 'systrader79의 단기 시스템 트레이딩 강의' 와 '팩터 백과 사전 강의' 가 뉴지스탁에서 진행중입니다~ 주식 단기 트레이딩과 자산 배분 전략에 관심이 있으신 분들의 많은 성원 부탁드립니다
4. 여러분의 인생이 걸린 너무나도 중요한 소식 ----> 여기를 클릭하세요!
'유용한 정보' 카테고리의 다른 글
구글 바드, 한국 서비스 개시 (0) | 2023.04.19 |
---|---|
ChatGPT의 한계를 넘어선 Auto-GPT, 일반 인공 지능을 꿈꾸다 (1) | 2023.04.13 |
ChatGPT 5 출시일, 뉴스 (0) | 2023.04.05 |
구글 Bard 출시 (1) | 2023.03.22 |
Book review - Effective software testing (0) | 2023.03.21 |
Chatgpt4의 놀라운 기능 14가지 (0) | 2023.03.18 |
ChatGPT 시대에 반드시 깔아야 할 3가지 크롬 플러그인 (0) | 2023.03.18 |
크레디트 스위스 은행의 파산설의 내막과 진실 (1) | 2023.03.15 |
댓글