Lから始まるLinux

3章13話
exitコマンド
3章14話 ヌルコマンド
もくじ
3章15話
引数処理
ヌルコマンド :
若木 しげる
今回は「ヌルコマンド(null command)」 : を学ぼう!
若木 みどり
ひょっとして 「何もしない」 コマンドかな?
若木 しげる(驚き)
そのとおり! よくわかったね!
若木 みどり
/dev/null とかで 気になって調べたんだ null は「空っぽ」「空虚」 って意味でしょ!
若木 みどり
でもなんで 「何もしない」コマンドが 用意されているんだろうね?
使い方
若木 しげる
まずは 使い方から 見ていこう!
: [引数]...
若木 しげる
どんな引数を指定しても何もせず成功して終了するよ
若木 みどり
true と同じということ?
若木 しげる
そうだね!挙動は true と一緒だよ
若木 しげる
true「成功を返す」重きをおいているけど:「何もしない」重きをおいているんだ
若木 みどり
文脈で true:使い分けるんだね!
コマンドの記述が必要な場合
若木 しげる
いくつかの記述には必ずコマンドが必要になるよ制御文 if, for, while での処理のほかグルーピング { ... }, ( ... ) などがあるよ
若木 みどり
「必ず書かないといけないけど書く処理がない」そういう時に : を書いておけばいいんだ!
若木 しげる
たとえば以下は成功するまでコマンドを繰り返すよ
while ! コマンド
do
  :
done
若木 みどり
!コマンド の終了ステータスを反転させているからコマンド が失敗する限り処理を繰り返し」という処理ね
若木 みどり
dodone の間に必ず処理を書かないと行けないからそこで : を書いているんだね!
空ファイル作成
若木 しげる
空ファイル作成を以下のように書くこともあるよ
: > ファイル
若木 みどり
何もせず何も出力しないからこうやって空ファイルを作れるんだねtouch と同じかな?
若木 しげる
実は touch の本当の役割は「ファイルに記録されている時刻を修正する」なんだオプションを指定しないと「最終アクセス時刻と変更時刻を今に変更する」という動きをするよファイルが存在していなければ空ファイルを作って時刻を設定してくれていたんだ
若木 みどり
「触って(touch)」アクセスしたのは今だよ!っていう役割だったんだね
若木 しげる
なので存在しないファイルを指定する場合はtouch と同じだけど存在しているファイルを指定する場合は挙動が違ってくるんだ
コマンドファイルの内容
touch ファイル変化なし
: > ファイル空になる
若木 しげる
: の代わりに何も出力しないコマンドで代用することもできるけど: が一番簡単な指定だよ
コメント(非推奨)
若木 しげる
: の引数に文章を書いてコメントとして使われることもあるんだ
: コメント
若木 みどり
どんな引数でも何もしないので確かにコメント代わりに使えるかも
若木 しげる
でも : もコマンドである以上わずかでも処理があるんだ# ではそのようなこともなくコマンドの途中でも使えるよ#: をコメントとして使う場合の完全上位互換なんだ
若木 しげる
見かけても「これはコメントなんだな」と読むようにして自分で書くコメントは # を使おう!
まとめ
若木 みどり
今回はヌルコマンド : を学んだよ!「何もしない」ことを意思表示する所で使うんだ!
若木 しげる
知らないとスクリプトの中に出てきた: に戸惑うことになるよヌルコマンドがあることを覚えておこう!