UnixとLinuxでこれから業務をしていく方々、もしくは興味があって勉強を始めている方はいずれシェルスクリプトを書けるようになりたい!と思っているのではないでしょうか。
今回紹介する書籍は、私が未だに重宝している書籍になります。
書籍のタイトルは「[改訂新版] シェルスクリプト基本リファレンス--#!/bin/shで、ここまでできる」です。
記事のタイトル通り、この一冊があれば間違いなく困らないとはっきり言えます。
LPICのシェルスクリプトの項目では正直な所、自由自在にシェルスクリプト操れる知識が付かないと思います。
そこで、具体的にどういった点が素晴らしいか、重宝しているのか個人的な感想ですが書いていきたいと思います。
またLinuxを扱いながらキャリアアップするのにシェルスクリプトによるコーディングは必須だと思っておいて良いでしょう。
転職においてもスクリプトが作成できるか確認されるのもよくあります。
それでは書籍に紹介をしていきたいと思います。
基礎から簡潔に説明されている
コマンドの解説が簡潔
シェルスクリプトでは基本的な構文を覚えて、応用していく必要があります。
しかしながら、Linuxコマンドも同時に使い方も知っておく必要があります。
この書籍では、コマンドの実行結果やパイプなどの連続実行などコマンドの実行結果について非常に簡潔に記載されていて、かつシェルスクリプトで非常に有効なコマンドを紹介してくれています。
普段の構築、運用業務で使わないコマンドはたくさんありますがシェルスクリプトで意外に効力を発揮するコマンドがあります。
例えばteeコマンドとかですね。
シェルスクリプトを実行しても、一部はログにリダイレクトしつつも標準出力したい時に使います。
localコマンドなどシェルスクリプトでしか使う機会が無いのもこの書籍で学びました。
こういったコマンドの知識も同時に身につきます。
本当に基礎から応用まで出来る
if文の書き方、whileやforなど、プログラムとして動かすための基礎知識が本当に丁寧に書いてあります。
これらの構文も、一つの型があるわけではなく複数パターンの使い方があります。
つまり、自分にあった書き方を身に着ける事が出来ます。
私の場合は、ifは引数チェックやコマンドの実行結果の判定、forはシェルスクリプトであまり使わずワンライナー(こちらの記事で紹介しています)で多用しています。
使い方を学んだ上で、あとは動かし方を覚えればたくさん応用が出来るようになりました。
特にfor文とwhile分は書き方によって同じ処理も出来ますが、それぞれの処理方法で効率や向き不向きも違います。
これは書籍に直接関係するものではありませんが、こういった観点でコーディング出来るようになるとさらにシェルスクリプトの技術が向上するでしょう。
ifの判定式一覧は本当に便利
本書には、簡潔にまとめられたページがいつくつかあります。
その中で、1番便利なのがif文の判定式です。
私はこのページを付箋しています。
単純に大か小か、+か-かだけではなく様々な判定方法があるんですよね。
ファイルの存在チェックやディレクトリかどうかの確認、空ファイルかどうかなど条件判定で出来ることは多岐に渡ります。
何かを分岐させたい時にやはり基礎はif文になるので、そこで判定出来る算術式の一覧が載っているのは本当に有益で、ググるより手元で見た方が全然早いです。
それと合わせて、csh、BSD Shell、Bashなど複数のシェルで使える構文、使えない構文も書いてあります。
RHELやSolarisのようにデフォルトのシェルが異なるOSでも対応が出来るので、一つのUnix環境やLinux環境だけではなく汎用的に使用できるのも本書のメリットです。
自然と正規表現の知識が付く
正規表現はWindowsユーザからすると一番の難関だと思っています。
正規表現とは簡単に説明すると特殊文字を使って最低限のコーディングで効率的に処理するための知識だと思っていただければと思います。
正規表現は覚えてしまうと一気に楽になってしまいます。
テキストエディタで置換機能など使って文字の置き換えをしたりしていると思いますが、正規表現を使えるようになるともっと便利に扱えるようになりますし、Unix、Linux上ではもっと便利になります。
本書では、コマンドの使い方の中に、正規表で用いる記号¥(エスケープ)などが出てきます。
もちろん、正規表現との組み合わせで便利な処理が出来るawkも出てきます。
これらのコマンドを覚えていくうちに正規表現に慣れていけるのが素晴らしいと思います。
正規表現だけを学ぼうとしても、膨大なパターンがあってすべて覚えてもすべて使う事はないと思います。
しかしながら、本書ではコマンドやシェルスクリプトの使用例で学べるため非常に実践的です。
せっかくUnix、Linuxをやるなら正規表現の知識もぜひ身につけましょう。
書籍はこちら。
2020年10月31日更新
現在でもこちらの参考書を見ながらシェルスクリプトを書いたり読む機会があります。
Windows10では「Windows Subsystem for Linux」という機能があり、Bashを使う事が出来ます。
Windows環境であってもLinuxコマンドが利用できる環境もあるので、ぜひシェルスクリプトの理解を深めて頂ければと思います。
まとめ
いかがでしたでしょうか。
もしシェルスクリプトの勉強の仕方に迷っていたり、何から手を付けて良いかわからない場合はぜひ本書を参考にして頂ければと思います。
むしろ、書ける人にも持っておいて損はない一冊だと思います。
基礎的な知識の見直しにもなりますし、基礎を取り戻すことでより効率的なコーディングが出来るようになることもあります。
コマンド、シェルスクリプト、正規表現、この3つの知識が身につく書籍は非常に貴重だと思います。
Unix系やLinux系ではバッチ処理にシェルスクリプトを使用したり監視に使用することもあります。
アプリケーションのエンジニアも覚えておいても良いですしインフラエンジニアは絶対的に持っておくべき技術なのでぜひ学習して使いこなせるようになって欲しいと思います。