이미 소장하고 있다면 판매해 보세요.
|
옮긴이 머리말 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 |
上田 隆一)
山田 泰宏
田代 勝也
中村 ?一
今泉 光之
上杉 ?史
김모세의 다른 상품
|
[소문제 4]의 해답은 sed 's/에틸/에틸에틸/'로 구해도 좋지만, 조금 응용해서 &를 붙였습니다. &는 검색 대상 문자를 재사용할 때 사용합니다. 이 소문제에서 &는 ‘에틸’을 가리키며 &&는 ‘에틸에틸’이 됩니다. / [소문제 5]의 해답도 &와는 다른 방법으로 검색 대상을 재사용합니다. 검색 대상의 문자열을 괄호로 감싸면 순서대로 번호가 부여되며, 치환한 뒤의 문자열 위치에서 \1, \2, ...처럼 호출할 수 있습니다. ‘\숫자’를 비롯해 이러한 문자열의 재사용 기능을 후방 참조(backward reference)라고 합니다.
--- p.22 팬독(Pandoc)이라는 소프트웨어를 사용한 다른 풀이 방법을 소개합니다. pandoc은 sudo apt install pandoc으로 설치할 수 있습니다. [다른 풀이] $ pandoc headings.md -f markdown+hard_line_breaks -t markdown+hard_line_breaks 팬독은 마크다운 등을 다른 형식으로 변환 및 역변환할 수 있는 라이브러리이자 명령어로, 여러 웹 시스템에서 사용됩니다. 이 다른 풀이 방법은 마크다운을 마크다운으로 변환하면 제목 형식만 변환되는 점을 활용한 것입니다. --- pp.63~64 다음 문제는 재미있는 퍼즐입니다. 유니코드와 UTF-8에는 복숭아, 체리, 딸기가 나열되어 있습니다. echo 복숭아 딸기(이모지 사이에 반각 스페이스가 있음)로 원라이너를 시작해서 복숭아 딸기의 평균값을 구해 체리를 출력하세요. [해답①] 문제에 있는 이모지의 문자 코드는 UTF-8에서 복숭아는 0xf09f8d91, 체리는 0xf09f8d92, 딸기는 0xf09f8d93입니다. 해답의 흐름은 대략 다음과 같습니다. ① 문자를 문자 코드의 16진수 값으로 변환 ② 2개의 16진수의 평균값을 계산 ③ 16진수의 문자 코드를 문자로 변환 --- pp.320~321 df는 시스템이 사용하는 로컬 파일 시스템의 목록을 표시하는 명령어입니다. 각자의 환경에서 df -Th 뒤에 파이프를 연결하고, 헤더 행과 디렉터리의 루트(/)에 관한 정보 행을 추출하고, 정보를 읽어보세요. 그림 7.1은 df -Th의 출력 예입니다. 참고로 df의 -T는 파일 시스템 타입을 표시하는 옵션이고, -h는 기억 용량 단위를 사람이 읽을 수 있도록 기가바이트 또는 테라바이트 단위로 표시하는 옵션입니다. --- p.377 여러 개의 서로 다른 웹 API로부터 얻은 정보를 조합(옮긴이: 원서는 JR 동일본이 운영하는 철도 노선인 야마노테선(山手線)의 표고를 구하는 문제였습니다. 이 책에서는 한국 실정에 맞춰 수도권 9호선과 구글 맵 API를 이용해 표고를 구하는 문제로 바꾸었습니다. 둘 다 어려운 문제입니다.)하는 간단한 매시업 문제에 도전해보겠습니다. / 수도권 지하철 9호선의 역명 목록을 역의 표고가 낮은 순(오름차순)으로 정렬해서 출력하세요. --- p.517 |
|
한 줄짜리 텍스트로 비약적인 업무 성과를 내는 셸 원라이너
160개의 극한 문제로 예술의 경지를 경험하다 파이썬으로 짜면 수십 줄 걸릴 작업을, 한 줄짜리 스크립트로 처리할 수 있다면 믿어지는가? 셸 명령어 하나하나는 단순한 기능만을 수행하지만, 이들을 조합하면 데이터 가공, 웹 스크레이핑, 시스템 모니터링 등 강력한 작업을 처리할 수 있다. 일본의 셸 장인 6인이 출제한 160개 문제가 담긴 이 책은, 이러한 한 줄짜리 명령 ‘원라이너’ 작성 능력 향상을 목표로 한다. 리눅스 환경과 셸 기초를 익히는 데에서 시작해 텍스트, 테이블, JSON/CSV, 날짜/시간, 바이너리 등 데이터를 조작하는 방법을 살펴보고, 나아가 데이터를 가공하고 처리하는 데 필요한 정규표현식, 유니코드, 이미지/날짜/시간 데이터, 통신 프로토콜 지식도 알아본다. 리눅스 환경의 더 깊은 부분, 소스 코드 조작, 데이터 생성, 깃 활용 등 소프트웨어 개발 시 도움이 되는 원라이너도 함께 담았다. 일본어 텍스트를 다루는 문제들은 한국 실정에 맞는 비슷한 문제들을 고안해 교체한 정성도 돋보인다. 160개 문제 중에는 실전적인 문제가 있는가 하면, 사고력을 기르기 위한 순수한 (수학) 퍼즐 같은 문제도 있다. 풀이 역시 한 가지가 아니라 생각지도 못한 방식을 포함해 여러 가지를 제시한다. 문제에 대한 해답을 단순히 암기하는 것이 아니라 원리를 생각하고 명령을 조합하는 방식을 훈련해야 한다는 점을 강조하기 때문이다. 이 책과 함께 사고력을 단련해서, 실무에서 예상하지 못한 문제를 만나더라도 해결 방법을 스스로 생각할 줄 아는 개발자가 되어보자. 대상 독자 - 셸 명령어를 예술의 경지로 끌어올려 사용하고 싶은 사람 - 리눅스/유닉스 파워 유저 - 시스템 관리자, 서버/네트워크 관리자, 인프라 엔지니어 - 대학, 기업, 연구소의 연구자 |