シェルスクリプトは基本文法だけ勉強しても書けません

シェルスクリプトを勉強中の初心者の人に言いたいのが、
「基本文法だけ覚えてもシェルスクリプトは書けない」
ということです。

どういう意味かというと、シェルスクリプトの基本文法を理解したとしても、現場で通用するレベルのものが書けるかというと難しいということです。 

それは一体なぜだか分かりますか?

この記事を読むと、以下が分かります。

  • 文法だけ勉強してもシェルスクリプトを書けない理由
  • 現場で通用するシェルスクリプトを書くための勉強方法

【文法だけ勉強してもシェルスクリプトを書けない理由】

定石を知る必要がある

例えば、While文にコマンド結果を渡してループする方法や、リストファイルを読み込んで指定した区切り文字で分解して処理をする方法など、こうしたい時はこうするとよいという定石があります。このような定石を知ることで、以下のようなメリットがあります。

  • コーディングの無駄をなくす
  • 時間短縮

シェルスクリプトは目的に対して同じ結果となるやり方が無数に存在します。その中でもより効率のよい方法で実装することで、無駄をなくすことができます。

複数行で書いていた処理が、「そんな簡単にできるのー」というのはよくある話です。

また、定石を知らないと実装方法の調査に時間を割く必要があり、作成にも時間が掛かってしまう要因になります。

お決まりのお作法がある

エンジニアになって色んな現場を経験すれば分かりますが、どの現場においても大体共通しているお作法(コーディングルール)があります。 それは例えば以下のようなものです。

  • ヘッダーを書く
  • インシデントを揃える
  • 変数代入は上部にまとめる
  • コメントで処理の見出しを書く
  • 戻り値をつける
  • 結果をログに出力する

現場によってはシェルスクリプトのコーディングルールを明確に定めていないところも多いです。そのような時に、少なくとも上記のようなことについては暗黙の了解として知っておいたほうがよいですよ。

コマンドの知識が必要

シェルスクリプトはコマンドを実行して処理が進んでいきます。そのため自ずとLinuxコマンドについても豊富な知識が必要となります。

各コマンドのオプションや、細かい表示結果などまでは覚えていなくてもよいですが、やりたいことに対して、コマンド名くらいは出てくるように覚えておきたいところですね。

【現場で通用するシェルスクリプトを書くための勉強方法】

ここまで説明したように、文法だけ覚えてもシェルスクリプトを書くのは難しいという事が分かったでしょうか。

では、どのようにして勉強すれば現場レベルで通用するシェルスクリプトが書けると思いますか?

その答えは、色々なサンプルスクリプトから学ぶことです。

方法としては、主に以下2つがあります。

  • インターネットで公開されているサンプルスクリプトから学ぶ
  • シェルスクリプトのサンプル集の本から学ぶ

インターネット上に公開されているものは、実際に現場での運用を想定して作成されているものが多いため、特に上記で紹介した「お決まりのお作法」の部分を学ぶのにおすすめです。

しかし、解説がない場合も多く、色々なテクニックを知るにはそれだけ多くのページを検索する必要があり面倒です。

なので、シェルスクリプトの定石や、ちょっとした小技などのテクニックは、シェルスクリプトのサンプル集の本で勉強するのが効率的です。 おすすめの本を2つ紹介します。

■UNIXシェルスクリプト マスターピース132

こちらは、現場で使えるテクニックが豊富に散りばめられたシェルスクリプトサンプル集です。 タイトルの通り、132本ものサンプルスクリプトが紹介されています。

シェルスクリプトの定石や小技、様々なコマンドの使い方などを学ぶことができるだけでなく、実際の現場での使用を想定するとこういう書き方にしておいた方がよいという説明があったりして、初心者にとって知っておくべきテクニックがてんこ盛りで、非常に勉強になります。

参考として目次の大項目は以下の通りです。

CHAPTER 01 ユーザインターフェース
CHAPTER 02 変換処理
CHAPTER 03 ファイル処理
CHAPTER 04 日付処理
CHAPTER 05 ネットワーク
CHAPTER 06 テキスト処理
CHAPTER 07 シェルの機能を使いこなす
CHAPTER 08 制御構文のサンプル
CHAPTER 09 サーバ管理
CHAPTER 10 bash
APPENDIX 追加情報

特に「CHAPTER 03 ファイル処理」では、肝となるfindコマンドの色々なオプションの使い方であったり、「CHAPTER 06 テキスト処理」では、リストファイルを取り込み様々な処理をする方法や、文字列を置き換えるsedコマンドの使い方など、現場でも登場シーンの多い処理方法について詳しく解説があります。

その他にも、サンプルスクリプトの数が多いので、この1冊で基本的なことは勉強できます。とりあえず持っておけば、いざという時に役に立つ本です。

以下のような口コミがあります。

非常に多くの実例が掲載されています。また、シェルスクリプトだけでなくLinuxの勉強にもなります。シェルスクリプトの基本の文法についてはウェブなどで簡単に予習しておけば、説明が丁寧なので初心者でも読み進めることができます。

サーバー運用していると大量のファイルを操作する時があります。 (ログ移動や、ファイル名のリネーム等) その時にこの本に書かれているUNIXコマンドや、シェルスクリプトが役立ちました。 シェルスクリプトのソースコードも、解説も見やすいので、 シェルスクリプトをどう書けば良いか悩んでいる方にオススメの本です。

引用元:https://www.amazon.co.jp/UNIXシェルスクリプト-マスターピース132-大角-祐介/product-reviews/4797377623/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews

こちらから購入できます。

※Amazon → UNIXシェルスクリプト マスターピース132

■UNIX/Linuxシェルスクリプトマスタリングハンドブック[第2版]

こちらは本は、より初心者向けです。
シェルの文法の説明などが6割、サンプルスクリプトが4割(スクリプト48本)の構成となっています。

前半で文法などの説明があるので、基礎がまだ不十分だと思う方はこちらがおすすめです。

サンプルスクリプトは短めですが数は48本と、まあまああります。実際の現場でよくありそうなサンプルスクリプトに厳選されている感じがしました。 例えば以下のようなものがあります。
 ・サーバへ接続してファイルダウンロード
 ・ファイルの拡張子の変更処理
 ・sshの公開鍵認証の設定の自動化
 ・ファイルの所有者が存在しないUIDの場合移動する

こちらから購入できます。

※Amazon → UNIX/Linuxシェルスクリプトマスタリングハンドブック[第2版]
 
 

自分は実際に上記の本を読んで勉強することで、様々なテクニックを覚えて、シェルスクリプトの作成に自信を持つことができました。

シェルスクリプトが書けるようになれば、技術者として自分の価値が上がります。自分の価値が上がれば、より単価の高い現場にいけます。より単価の高い現場にいけば、給料が上がります。

上記は少し大げさかもしれませんが、勉強が習慣化されれば、着実に階段を上がっていけます。

値段もそんなに高いものではないし、それ以上に得られるものは多いです。まずは行動してみてはどうでしょうか。

スポンサーリンク
勉強wikiの下部広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
勉強wikiの下部広告

コメントをどうぞ

メールアドレスが公開されることはありません。

CAPTCHA