Top

한눈에 빠져드는 셸 스크립트 2/e [리눅스, 맥OS, 유닉스 시스템을 위한 101가지 스크립]

  • 원서명Wicked Cool Shell Scripts, 2nd Edition: 101 Scripts for Linux, OS X, and UNIX Systems (ISBN 9781593276027)
  • 지은이데이브 테일러(Dave Taylor), 브랜든 페리(Brandon Perry)
  • 옮긴이김기주, 김병극, 송지연
  • ISBN : 9791161751412
  • 35,000원
  • 2018년 04월 17일 펴냄
  • 페이퍼백 | 540쪽 | 188*235mm
  • 시리즈 : 오픈소스 프로그래밍

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

요약

시스템 관리자, 인터넷 서버 관리자 등이 매일매일의 업무를 손쉽게 하도록 도와주는 101가지 셸 스크립트를 담고 있다.
뿐만 아니라 날짜와 약속을 기록하고 클라우드 서비스를 활용하며, 간단하지만 재미있는 게임도 만들 수 있다.
셸 스크립트에서 맥OS 특유의 기능을 활용하는 법도 알아본다. 업무에 당장 적용할 수 있는 셸 스크립트들을 소개하고 있어, 이 책에 소개된 셸 스크립트들을 살펴보다 보면 셸 스크립트의 고수가 돼 있을 것이다.

이 책에서 다루는 내용

■ 시와 주를 알려주는 우편번호 찾기 도구
■ 비트코인 주소 정보 추출기
■ Dropbox와 iCloud 같은 클라우드 서비스를 활용하는 일련의 도구들
■ 여러 파일의 이름을 한꺼번에 바꿔주는 도구와 여러 파일에 한꺼번에 명령을 적용하는 도구
■ 이미지 처리 및 수정 도구

이 책의 대상 독자

bash는 웹 개발자(이들 중 상당수가 맥OS에서 개발하고 리눅스 서버에 배포한다), 데이터 분석가, 모바일 앱 개발자, 소프트웨어 엔지니어 등 유닉스 계열 서버나 워크스테이션을 사용하는 모든 사람에게 주요한 도구다. 게다가 여러 애호가가 리눅스를 라즈베리 파이 같은 오픈소스 마이크로컴퓨터에서 실행해 자신의 스마트 홈을 자동화하고 있다. 이런 모든 용도에서 셸 스크립트는 완벽하다.
셸 스크립트로 작성된 이들 애플리케이션들은 이미 상당 수준인 bash 기술을 몇 가지 멋진 셸 스크립트로 더욱 발전시키려는 사람들과 가끔씩만 터미널이나 셸 스크립트를 사용하는 사람들 모두에게 무한히 유용하다. 후자의 경우, 몇 가지 지름길을 복습하거나 그 동안 익힌 것들에 좀 더 고급스러운 bash 개념을 보충하고 싶을 수도 있다.
하지만 이 책은 지침서가 아니다. 실용적이고, 전문적인 bash 스크립트와 공통 유틸리티의 응용 예를 (대부분) 짧고 간단한 스크립트로 보여주려고 하지만, 줄 별로 설명하지는 않는다. 각 스크립트의 핵심부를 설명하면, 좀 더 노련한 셸 스크립트 개발자는 코드를 읽음으로써 나머지 스크립트가 어떻게 동작하는지를 알 수 있을 것이다. 그러나 우리는 여러분이 스크립트를 갖고 놀기를 바란다. 코드를 망가뜨리고 고치고 목적에 맞게 수정하면서 알아내기를 바란다. 이들 스크립트의 진정한 목적은 웹 관리나 파일 동기화와 같은 공통적인 문제, 사용하는 도구와 상관 없이 모든 컴퓨터 전문가들이 풀고자 하는 문제들을 해결하는 것이다.

이 책의 구성

2판은 원래의 12개 장을 갱신/현대화하고 새롭게 세 장을 추가했다. 각 장은 셸 스크립트의 새로운 기능이나 용례를 보여주고, 셸 스크립트를 사용해 유닉스 사용의 능률을 높일 수 있는 폭넓은 방법을 다룬다. 맥OS 사용자는 이 책의 스크립트 대부분이 리눅스나 맥OS 모두에서 동작할 것이라 믿어도 좋다. 그렇지 않은 경우는 따로 명시해뒀다.

0장, ‘셸 스크립트 특강’ 2판에 새로 추가된 장으로, 새로운 유닉스 사용자에게 bash 스크립트의 문법과 사용법을 간단히 소개한다. ‘셸 스크립트가 무엇인가?’라는 정말 기초적인 것부터 간단한 셸 스크립트를 만들고 실행하는 것까지, 이 짧고 간단명료한 장은 bash 스크립트를 빠르게 익혀 1장 이후를 잘 이해하는 데 도움을 준다.

1장, ‘누락된 코드 라이브러리’ 유닉스 환경에서 프로그래밍 언어, 특히, C, 펄, 파이썬은 숫자 형식을 검증하고, 날짜 오프셋을 계산하는 등 여러 가지 유용한 작업을 수행하는 유용한 함수와 유틸리티를 담고 있는 대규모의 라이브러리를 갖고 있다. 셸을 사용할 때는 대부분 스스로 해결해야 하므로 이 첫1장은 셸 스크립트를 좀 더 친근하게 만들어주는 여러 가지 도구와 기법에 초점을 맞춘다. 1장에서 배우는 내용은 이 책에 담긴 스크립트와 여러분 스스로의 스크립트 모두에 도움이 될 것이다. 1장은 여러 가지 입력 검증 함수, 간단하지만 강력한 bc의 스크립트 프론트엔드, 매우 큰 숫자를 표시할 때 도움이 되는 콤마를 빠르게 추가하는 도구, echo에서 유용한 -n 플래그를 지원하지 않는 유닉스에서 이를 극복하는 기법, 스크립트에서 ANSI 색깔 코드를 사용하는 스크립트 등을 담고 있다

2, 3장, ‘사용자 명령어 개선’ 이들 두 장은 유닉스를 여러 가지 유용한 방식으로 확장하는 새로운 명령들을 담고 있다. 유닉스의 훌륭한 측면 중 하나는 유닉스가 언제나 진화한다는 점이다. 우리는 다음 해커만큼 이 진화를 돕고 있는 것이다. 따라서 이 두 장은 친절한 대화형 계산기, 삭제 취소 도구, 알림/이벤트 추적 시스템, locate 명령의 재구현, 다중 시간대 date 명령, 디렉터리 목록의 유용함을 더해주는 새로운 버전의 ls를 구현하는 스크립트들을 제공한다.

4장, ‘UNIX 트윅’ 이것은 이단일 수도 있지만, 수십년간 개발됐음에도 불구하고, 유닉스에는 문제가 있는 것처럼 보일 때가 있다. 서로 다른 종류의 유닉스 사이를 움직이면, 특히, 오픈소스 리눅스 배포판과 맥OS나 솔라리스, 레드햇과 같은 상업용 유닉스 사이에는 플래그가 없거나, 명령이 없거나, 명령 사이에 일관성이 없는 등의 문제가 있다. 따라서 4장은 서로 다른 유닉스 사이에 조금이라도 나은 일관성을 제공하도록 유닉스 명령을 다시 작성하거나 프론트엔드를 제공한다. 여기에는 비GNU 명령에 GNU 스타일이 긴 이름 명령 플래그를 추가하는 방법도 포함된다. 다양한 파일 압축 유틸리티를 상당히 쉽게 이용할 수 있는 스마트 스크립트도 볼 수 있다.

5, 6장, ‘시스템 관리: 사용자 관리와 시스템 유지보수’ 이 책을 집어 들었다면, 개인용 우분투나 BSD 서버일지라도 하나 이상의 유닉스 시스템에 대한 관리자 접근 권한과 관리 책임을 갖고 있을 가능성이 높다. 이들 두 장은 디스크 사용량 분석 도구, 할당된 쿼터를 넘긴 사용자들에게 이메일을 자동으로 보내주는 디스크 쿼터 시스템, killall 재구현, crontab 검증기, 로그 파일 순환 도구, 몇 가지 백업 유틸리티 등 관리자의 삶을 향상시키는 다수의 스크립트를 제공한다.

7장, ‘웹과 인터넷 사용자’ 7장은 유닉스 커맨드 라인이 인터넷상의 자원을 활용하는 훌륭한(그리고 간단한) 방법을 제공한다는 점을 보여주는 정말 멋진 셸 스크립트 기법을 다수 담고 있다. 여기 담겨 있는 것으로는 웹 쪽으로부터 URL을 추출하는 도구, 날씨 추적기, 영화 데이터베이스 검색 도구, 웹 사이트에 변경이 생기면 자동으로 이메일을 보내주는 웹 사이트 변경 추적기 등이 있다.

8장, ‘웹 마스터가 할 수 있는 다양한 기능’ 어쩌면 여러분은 웹 사이트를 운영하고 있을 수도 있다. 자신의 유닉스 시스템을 이용하거나 네트워크상의 어딘가에 있는 공유 서버를 이용할 수도 있다. 여러분이 웹 마스터라면, 8장의 스크립트는 그때그때 웹 쪽을 만들고, 웹 기반 사진첩을 만들고, 심지어 웹 검색을 기록하는 흥미로운 도구를 제공한다.

9, 10장, ‘웹/인터넷 관리와 인터넷 서버 관리’ 이들 두 장은 인터넷을 통해 서비스를 제공하는 서버의 관리자가 겪는 어려움을 다룬다. 여기에는 웹 서버 트래픽 로그의 서로 다른 측면을 분석하는 두 가지 스크립트, 웹사이트의 깨진 내외부 링크를 식별하는 도구, .htaccess 파일의 정확도를 쉽게 유지하도록 해주는 매끄러운 아파치 웹 패스워드 관리 도구가 담겨 있다. 디렉터리와 전체 웹사이트를 미러링하는 기법도 다룬다.

11장, ‘맥OS 스크립트’ 매력적이고, 상업적으로 성공한 GUI를 갖춘 맥OS는 유닉스를 사용하기 쉬운 운영체제로 통합하는 엄청난 도약이다. 중요한 것은, 맥OS는 예쁜 인터페이스 뒤에 완전한 유닉스를 감추고 있기 때문에 다수의 유용하고 교육적인 스크립트를 작성할 수 있고, 11장은 바로 이를 다룬다. 자동화된 화면 캡처 도구 외에도, 11장은 iTunes가 음악 라이브러리를 저장하는 방법, Terminal 윈도우 제목을 바꾸는 방법, 유용한 open 명령을 개선하는 방법을 다룬다.

12장, ‘재미있는 셸 스크립트 게임’ 최소한 몇 가지 게임도 들어 있지 않은 프로그래밍 책이 있을까? 12장은 여섯 가지 재미있고 도전적인 게임을 만들기 위한, 이 책에서 가장 복잡한 기술과 아이디어를 담고있다. 12장의 목표가 즐거움이기는 하지만, 각 게임의 코드 또한 공부할 가치가 있다. 행맨 게임은 특히, 깔끔한 코딩 기법과 셸 스크립트 트릭을 자랑한다.

13장, ‘클라우드 환경에서의 작업’ 이 책의 첫 번째 판이 나온 이래로, 인터넷은 우리의 생활의 점점 더 많은 부분을 책임지게 됐다. 우리 삶의 상당 부분은 여러 장치와 파일을 iCloud, 드롭박스, 구글 드라이브와 같은 클라우드 서비스와 동기화하며 진행된다. 13장은 파일과 디렉터리가 백업되고 동기화되도록 해 이들 서비스를 백분 활용할 수 있도록 하는 셸 스크립트를 다룬다. 사진을 다루거나 텍스트를 음성으로 변환하는 맥OS의 특별한 기능을 자랑하는 몇 가지 셸 스크립트도 포함된다.

14장, ‘이미지 매직과 그래픽 파일’ 커맨드 라인 애플리케이션이라도 텍스트 기반 데이터나 그래픽에 제한될 필요는 없다. 14장은 전적으로 커맨드 라인에서 오픈소스 소프트웨어 이미지 매직에 포함된 이미지 처리 도구를 이용해 이미지를 식별하고 다루는 방법을 다룬다. 이미지 종류를 식별하는 데에서부터 이미지에 테를 두르고 워터마크를 넣는 데까지 14장의 셸 스크립트는 공통적인 이미지 작업뿐만 아니라 몇 가지 추가 작업도 수행한다.

15장, ‘요일과 날짜’ 마지막 장은 두 날짜가 얼마나 떨어져 있는지, 주어진 날짜의 요일은 뭔지, 특정 날짜까지 며칠이 남았는지 등 날짜와 예약을 다루는 지루한 작업을 간단하게 만들어준다. 우리는 이들 문제를 사용하기 쉬운 셸 스크립트로 해결한다.

부록 A, ‘윈도우 10에 Bash 설치하기’ 두 번째 판을 준비하는 동안, 마이크로소프트가 오픈소스 소프트웨어에 대한 입장을 크게 바꾸기 시작했다. 2016년에 완전한 bash 시스템을 윈도우 10용으로 발표하기에 이른 것이다. 이 책의 예제들이 이 버전의 bash에서 테스트되지는 않았지만, 다수의 개념과 해법은 매우 이식성이 높다. 부록 A는 윈도우 10에 bash를 설치하는 방법을 다뤄 여러분이 윈도우 기계에서 멋진 셸 스크립트를 직접 작성해볼 수 있도록 한다.

부록 B, ‘보너스 스크립트’ 훌륭한 보이 스카우트와 걸 스카우트는 모두 언제나 대안을 갖고 있어야 한다는 것을 알고 있다. 우리의 경우에는 이 책을 준비하는 동안 무슨 일이 일어나 스크립트 중 일부를 교체해야 할 때에 대비해 예비 셸 스크립트를 갖고 있기를 바랐다. 알고 보니 예비 스크립트는 필요치 않았지만, 친구에게 비밀을 알려주지 않는 것은 재미없다. 부록 B는 3개의 추가 스크립트를 담고 있다. 다량을 파일의 이름을 바꾸고, 다량의 파일에 대해 명령을 수행하고, 달의 위상을 알아낸다. 이미 101개의 스크립트를 준비한 이상, 이들 스크립트를 우리끼리만 간직할 수는 없었다.

저자/역자 소개

지은이 소개

데이브 테일러(Dave Taylor)

1980년부터 컴퓨터 업계에 몸담았다. BSD 4.4 유닉스에 기여했고, 개발한 소프트웨어가 주요 유닉스 배포판에 포함돼 있다. 대중 강연으로 수상한 적이 있고, 수천 개의 잡지 및 신문 기사를 썼다. 『Learning Unix for OS X』(O’Reilly Media, 2016), 『Solaris 9 for Dummies』(For Dummies, 2003), 『Sams Teach Yourself Unix in 24 Hours』(Sams Publishing, 2005) 등 20권이 넘는 책을 썼다. 리눅스 저널의 인기 있는 칼럼니스트로, 고객 기술 지원과 신기한 물건들(gadget)에 대한 리뷰를 담은 웹 사이트(askdavetaylor.com)를 운영하고 있다.

브랜든 페리(Brandon Perry)

오픈소스 .NET 구현인 모노의 출현과 함께 C# 애플리케이션을 작성하기 시작했다. 여유 시간에는 Metasploit 프레임워크용 모듈을 작성하거나, 바이너리 파일을 파싱하거나, 이것저것 뒤적이기를 좋아한다.

옮긴이의 말

셸 스크립트는 1977년에 만들어져 41년이 지나도록 꾸준히 사용되는 언어다. 유닉스 계열 운영체제에 들어 있는 여러 가지 유틸리티를 함수처럼 사용할 수 있다. if, for 등의 제어문과 간단한 연산도 지원한다. 셸 스크립트의 장점은 펄과 파이썬 등과 같은 다른 스크립트 언어도 많지만, 유닉스 계열 운영체제 어디서나 별도의 설치 과정 없이 사용할 수 있다는 것이다.
컴파일하지 않고 간단히 몇 줄 뚝딱 적어 복잡한 시스템 관리 업무를 척척 해낸다. 정말 멋지지 않은가? 유닉스의 파이프 기능을 이용하면 여러 유틸리티를 엮어 하나의 애플리케이션처럼 작동하게 할 수 있다.
이 책은 일반적인 셸 스크립트 학습서가 아니다. 유닉스 명령들을 하나씩 설명하고 셸 스크립트 문법을 설명하는 대신, 당장 실무에 사용할 수 있는 셸 스크립트들을 소개한다. 스크립트가 어떻게 동작하는지 알아보고 개선할 점을 찾아본다. 업무도 효율화할 수 있고, 셸 스크립트도 배울 수 있다. 꿩 먹고 알 먹고다!
한편으로는 셸 스크립트 학습서가 아니라서 약간은 부담스러워 할 사람들도 있을 텐데, 2판에는 셸 스크립트에 대한 기초 지식을 다지기 위해 0장, ‘셸 스크립트 특강’이 추가됐다.
셸 스크립트에 아직 익숙하지 않은 사람들에게 도움이 되길 바란다. 부록에서는 윈도우 10에 bash를 설치하는 방법도 소개했다. 앞으로 리눅스나 맥뿐만 아니라 윈도우에서도 cygwin 등의 도움 없이 손쉽게 셸 스크립트를 사용할 수 있길 바란다.

옮긴이 소개

김기주

포스텍 컴퓨터공학과와 동 대학원을 졸업한 후, 지금은 elastic.co에서 일래스틱서치 사용자들을 돕고 있다. LG전자에서 타임머신 TV, 썬마이크로시스템과 오라클에서 자바 VM 관련 개발에 참여했다. 공저로 『Security Plus For Unix』(영진출판, 2000), 역서로 에이콘출판에서 출간한 『임베디드 프로그래밍 입문』(2006), 『실시간 UML』(2008), 『리눅스 API의 모든 것』(2012), 『리눅스 실전 가이드』(2014)가 있다.

김병극

IMF 시절 웹 프로그래밍을 시작으로 SW 개발을 시작했으며, 그 후 삼성, 팬택 피처폰의 데이터 서비스(Data Service) 및 애플리케이션(Application) 관련 업무를 진행 중 피처폰에 자바 VM을 포팅하는 일이 인연이 돼 썬마이크로시스템과 오라클에서 자바 VM 관련 개발 업무를 했다. 현재는 시놉시스(Synopsys)의 정적 분석, 동적 분석 및 퍼징 테스트(Fuzzing test) 제품의 기술 지원 업무를 맡고 있다.

송지연

지엔텔, 노키아 지멘스 네트웍스에서 근무한 경험이 있는 WCDMA, LTE 분야의 통신 기술 엔지니어 출신으로, 취미로 팀을 개발에 한동안 푹 빠져 있기도 했다. 현재는 주전공인 소프트웨어 개발 분야로 돌아와 오라클 자바 개발 팀을 거쳐 그레이스노트 코리아에서 근무 중이며, 역서로는 『스프링 프레임워크 핵심 노트』(한빛미디어, 2013)와 『리눅스 실전 가이드』(에이콘출판, 2014) 등이 있다.

목차

목차
  • 0장 셸 스크립트 특강
    • 그런데, 셸 스크립트가 뭔가요?
    • 명령 실행하기
    • 로그인 스크립트 구성하기
    • 셀 스크립트 실행하기
    • 셸 스크립트를 보다 직관적으로 만들기
    • 왜 셸 스크립트인가?
    • 시작해보자

  • 1장. 누락된 코드 라이브러리
    • POSIX란?
    • #1 PATH에서 프로그램 찾기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #2 입력 검사: 영숫자만 가능
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #3 날짜 형식 정규화
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #4 큰 숫자 표현
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #5 정수 입력 유효성 검사
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #6 부동 소수점 입력 유효성 검사
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #7 날짜 형식 검사
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #8 Poor echo 구현 피하기
      • 코드
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #9 임의 정밀도 부동 소수점 계산기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #10 파일 잠그기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #11 ANSI 색상 시퀀스
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #12 셸 스크립트 라이브러리 빌드하기
      • 코드
  • 동작 방식
    • 스크립트 실행하기
    • 결과
  • #13 디버깅 셸 스크립트
    • 코드
    • 동작 방식
    • 스크립트 실행하기
    • 결과
    • 스크립트 해킹하기

  • 2장. 사용자 명령어 개선
    • #14 긴 텍스트 형태 맞추기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #15 제거된 파일 백업하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #16 삭제된 파일 보관하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #17 파일 삭제 내역 기록
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #18 디렉터리 내용 출력
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #19 파일명으로 파일 찾기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #20 다른 환경을 에뮬레이션하기: MS-DOS
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #21 다른 타임존의 시간 출력하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기

  • 3장. 유틸리티 만들기
    • #22 비망록 유틸리티
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #23 대화형 계산기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #24 온도 변환하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #25 융자 상환금 계산하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #26 이벤트 추적하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기

  • 4장. 유닉스 트윅
    • #27 줄 번호가 있는 파일 표시하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #28 긴 행만 래핑하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #29 파일에 추가 정보 표시
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #30 quota로 GNU 스타일 플래그를 에뮬레이트하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #31 sftp를 ftp와 비슷하게 보이도록 만들기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #32 grep 수정
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #33 압축 파일 작업
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #34 최대한 압축 파일 보장
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과

  • 5장. 시스템 관리: 사용자 관리
    • #35 디스크 사용량 분석
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #36 Disk Hogs로 리포트하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #37 df 결과 출력의 가독성 개선
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #38 사용 가능한 디스크 용량 알아내기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #39 Secure locate 구현하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #40 시스템에 사용자 추가하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #41 사용자 계정 일시 중지하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #42 사용자 계정 삭제하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #43 사용자 환경 검증하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #44 게스트 사용자가 떠난 후 초기화하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과

  • 6장. 시스템 관리: 시스템 유지보수
    • #45 Set User ID 애플리케이션 추적하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #46 시스템 날짜 설정하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #47 이름으로 프로세스 죽이기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #48 사용자 crontab 항목 검증
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #49 시스템 cron 작업이 실행되도록 보장하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #50 로그 파일 순환
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #51 백업 관리하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #52 디렉터리 백업하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과

  • 7장. 웹과 인터넷 사용자
    • #53 FTP를 사용한 파일 다운로드
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #54 웹 페이지에서의 URL 추출
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #55 GitHub 사용자 정보 얻기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #56 ZIP Code Lookup
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #57 지역 코드 검색
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #58 날씨 추적하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #59 IMDb에서 영화 정보 가져오기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #60 통화 가치 계산
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #61 비트코인 주소 정보 가져오기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #62 웹 페이지 변경 사항 추적
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기

  • 8장. 웹 마스터가 할 수 있는 다양한 기능
    • 스크립트 실행
    • #63 CGI 환경 살펴보기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #64 웹 이벤트의 로그
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #65 동적 웹 페이지 구성
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #66 웹 페이지를 이메일 메시지로 변경하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #67 웹 기반의 사진 앨범 생성
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #68 랜덤 문자열 출력
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기

  • 9장. 웹과 인터넷 관리
    • #69 손상된 내부 링크 식별
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #70 손상된 외부 링크 보고
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #71 아파치 패스워드 관리
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #72 SFTP와 파일 동기화하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기

  • 10장. 인터넷 서버 관리
    • #73 아파치 access_log 탐색하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #74 검색 엔진 트래픽 이해하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #75 아파치 error_log 탐색하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
    • #76 원격 아카이브로 재앙 피하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #77 네트워크 상태 모니터링
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #78 프로세스 이름별로 태스크 우선순위 변경
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기

  • 11장. 맥OS 스크립트
    • #79 스크린 캡처 자동화
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #80 터미널 타이틀 동적 지정
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #81 iTunes 라이브러리의 요약 목록 생성
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #82 open 명령어 수정
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기

  • 12장. 재미있는 셸 스크립트 게임
    • #83 Unscramble: 워드 게임
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #84 행맨: 단어를 빨리 생각하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #85 주 정부 수도 퀴즈
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #86 소수 찾기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #87 주사위를 굴려보자
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #88 에이시 듀시
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기

  • 13장. 클라우드 환경에서의 작업
    • #89 드롭박스의 실행 확인
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #90 드롭박스 동기화
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #91 클라우드 사진 스트림에서 슬라이드쇼 생성하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #92 구글 드라이브의 파일 동기화
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #93 컴퓨터의 음성 시스템
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기

  • 14장. 이미지 매직과 그래픽 파일
    • #94 더 똑똑한 이미지 크기 분석기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #95 이미지 워터마크
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #96 이미지 프레임 만들기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #97 이미지 섬네일 생성
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #98 GPS 위치 정보 해석
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기

  • 15장. 날짜
    • #99 과거 특정 날짜의 요일 알아내기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 스크립트 해킹하기
    • #100 날짜 사이의 날수 계산하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 스크립트 해킹하기
    • #101 특정 날짜까지의 날수 계산하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 스크립트 해킹하기

  • 부록 A. 윈도우 10에 bash 설치하기
    • 개발자 모드 켜기
    • bash 설치하기
    • 마이크로소프트의 bash 셸과 리눅스 배포판

  • 부록 B. 보너스 스크립트
    • #102 여러 파일 옮기기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #103 멀티프로세서 기계에서 여러 명령 실행하기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과
      • 스크립트 해킹하기
    • #104 달의 위상 찾기
      • 코드
      • 동작 방식
      • 스크립트 실행하기
      • 결과

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[뒷표지 상단]
캡처된 패킷을 그냥 보지 말고 분석하라!
->
시간을 절약해주는 101가지 셸 스크립트