はじめに
ちょっと前に 「シェルスクリプト基本リファレンス #!/bin/sh で、ここまでできる」 という技術書を読みましたので記録しておきます。
なぜ読んだか?
LPIC 101 に合格し次に LPIC 102を受けるにあたり、試験範囲 の内容で何か技術書を一冊読みたいな~と。シェルやシェルスクリプトの理解を強化しよう!と思いこの本を手に取りました。
このへん や このへん (シリーズ 3 冊) とも迷ったのですが、本書が体系的に学べて読後もリファレンスとして活用していけそうと思い、本書に決めました。
結論、狙い通り、シェルやシェルスクリプトに関して体系的に学ぶことができました。シェルについてはこれまでやってきた LPIC 101 の勉強ともしっかり繋がり、このタイミングで本書を読んだのは良かったと思います。
感想など
本書を読み終えてまず思ったことが、シェルやシェルスクリプト、およびそれらを構成する各要素について、よくここまで網羅的に、且つわかりやすく情報を整理しているなぁという率直な感想でした。著者に対してリスペクトいたしました。
本書は、「シェルとは?シェルスクリプトとは?」や「そもそもコマンドとは?パイプラインとは?リストとは?」といった基礎的なところから始まります。基礎と侮ることなかれ。「あ~普段何気なく使ってたけど、こういう風に整理ができるのね」みたいな新しい発見が非常に多くありました。基礎の理解は大事だとあらためて感じました。
読み進めていくと if/case/for/while 等の構文、シェルスクリプトでよく使われる組み込みコマンドや外部コマンドの説明、$0/$?/$#/$! といった特殊パラメータ、パス名展開/ブレース展開/コマンド置換といったシェルによる各種展開など、知っておくべき事項を順々に学ぶことができます。
特筆すべきは、上記の内容がすべて、以下 6 種類のシェルで対応しているか (≒使えるか) を ○× でパッと見でわかるようになっていることです (稀に △ もあります)。
- bash
- sh (FreeBSD)
- sh (Solaris)
- sh (BusyBox)
- dash (Debian)
- zsh
これは本当にすごいことだと思います。おそらく根気強く検証して情報整理されたのだと思われます。私が読んだのは [改訂第4版] ですが、これまで 3 回も改訂されてきた理由が分かる気がしました。初版はなんと 2005 年です。
おわりに
さて、個人的には褒めるところしか見つからない本書ですが、ここで 1 つの疑問が生じました。
昨今の生成 AI の進化はすさまじく、「こういう処理を行うスクリプト作って」といったら数秒で作ってくれ、「このスクリプトって何をしているの?」と聞いたら数秒で答えを教えてくれる世の中になりました。
そんな状況下で、シェルスクリプトで使う各種構文の意味や使い方、文法を学ぶ必要があるのか?という疑問です。
私の答えとしては、「学ぶ必要が全くないと言ったら言い過ぎ。しかし学ぶ優先順位や学びにかける時間は減らしてもいいかもね」といった感じでしょうか。
Linux の知識・理解を深めるという観点では、シェルはユーザーとカーネルを繋ぐ基本的なインターフェースでありますし、Linux で提供される各種コマンドや仕組みにおいてはシェルスクリプトが広く使われていることから、それらを学ぶこと自体に意義はあると考えます。
