【書籍】入門UNIXシェルプログラミング - シェルの基礎から学ぶUNIXの世界 [改訂第2版]

今回ご紹介するのはこちらの書籍。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

イントロダクション

何といっても、本書のサンプルコードは20年経った今でも動く。
それだけ著者の愛が詰まっている。

本書を薦める対象者

  • シェルスクリプトが摩訶不思議ワールドに見える人
  • 枯れた技術にも興味がある人
  • 愛を忘れた人

内容のご紹介

本書は、あらゆるUNIXに標準搭載されているBシェル(/bin/sh)向けのプログラミングを学べる本です。

本書の構成は、ざっくり下記になっています。

  • 第1~8章  シェルの基礎知識について (200ページ強くらい)
  • 第9~10章   実際にシェルスクリプトを色々作る (100ページ強くらい)
  • 第11章   デバッグのやり方について
  • 第12~13章 よくハマる注意点や汎用的なシェルスクリプトにするためのノウハウ
  • 付録A     各シェル(sh,csh,kshなど)についての紹介
  • 付録B     リファレンスとして使える基本構文の一覧 (本書の各説明ページへの参照付き)

基本構文だけでなく、豊富な例とサンプルコードと共に、ハマりがちな注意点についても丁寧に説明されています。
まさにシェルプログラミングに必要な基礎とノウハウが詰まった1冊です。

各サンプルコードについての説明はこれでもかというくらい丁寧です。
何をしているかだけでなく、何故こんな書き方をしているのだろう疑問を持ちそうな箇所は、何故そう書くのかという説明がキッチリされています。
この辺りのノウハウが構文理解だけでは見えてこないので大変助かります。

また、このボリュームの本にしては、誤記や誤字も少なかったように感じます。
ちゃんと数えていませんでしたが、たしか僕が気になったのは2ヶ所くらい。(手元にあるのは第13刷です)

ただ、これから読まれる方にとって気になるのは、書籍自体が古いという点でしょうか。
改訂第2版 第1刷の発行が2003年となっており、初版に至っては1999年発行。
原著はもっと前になるので、実に20年以上前に書かれた本です。

しかし驚いたことに、本書掲載のサンプルコードのほとんどが、僕が試した環境でそのまま動きました。

僕が確認したこと/してないことについて補足すると

  • 確認環境は FreeBSD 12.0
  • 5.5 リモートシェル など、rshを使ったものは未確認 (FreeBSD 12からrshが消えちゃった。portsにはあるらしい)
  • 10.4 プロセス名に対してシグナルを送るシェルスクリプト は修正が必要 (psの出力結果からプロセス名を切り取る文字位置COL=66を68へ)
  • 10.14 プロセスの親子関係をツリー構造で出力するシェルスクリプト は修正が必要 (psの出力結果からプロセス名を切り取る文字位置COL=68を70へ)
  • その他はそのまま動作することを確認

といった感じです。
他にはループ外に出していい処理では?という箇所もありましたが、とりあえずそのまま動きます。
何か抜けがあったらすみません。

本書の難点をあげるなら、ボリュームでしょうか。
全体は400ページ越えの大型本です。
実例スクリプトを作り始める9章までは、200ページ以上の長い道のり。
それまで断片コードやコマンドラインから打ち込むような例はたくさん出てきますが、まとまった機能として作るのは9章、10章がメインです。
もしかすると飽きっぽい人は辛くなるかもですね。

とはいえ、いまだに新冊が売られている名書です。
シェルスクリプトが読めない/書けない、何となく読み書きしている人は、本書から得られるものは多いでしょう。

感想など

僕は今までシェルスクリプトについてちゃんと勉強したことがなかった。

初めてシェルスクリプトを見たのは、大学生の頃。
CやJavaに慣れていた僕には、とても奇妙で面倒な摩訶不思議ワールドに見えた。

「今さらシェルスクリプトなんて古っぽいし、他の言語で書けばいいや」

僕はそう思って、構文もろくに覚えなかった。

そんな僕がシェルスクリプトを眺めていると、不思議に見える記述が多々あった。

どうしてこんな書き方をしているんだろう?
ソースを読んでも意図が分からない。
しかし本書を読めば、そこに厄介な問題を回避するための思いやりがあることに気付く。

それはスクリプトを使う人、いつかメンテする人、そしてシェルへの思いやり。
自分の環境には関係ない、古臭いと言って見放したりしない。

もはやそれは愛だよ。

何といっても、本書のサンプルコードは20年経った今でも動く。
それだけ著者の愛が詰まっている。

本書を読めば、きっと貴方もその愛に気付けるようになるはずだ。

日々、環境やツールのバージョンアップで苦しまれている皆さん。

Bシェルのこと、覚えていますか?

愛・おぼえていますか

www.youtube.com

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界