★이책에서다루는내용★
■시와주를알려주는우편번호찾기도구
■비트코인주소정보추출기
■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개의스크립트를준비한이상,이들스크립트를우리끼리만간직할수는없었다.