今回のテーマは「パイプ」と「リダイレクト」です。それぞれ、コマンドの出力を別のコマンドに渡したり、ファイルに保存したりすることができます。コマンドを組み合わせて実行する際にもよく使われるテクニックです。
Linuxのコマンドラインを使いこなす上でポイントとなるのは、「パイプ(パイプライン)」と「リダイレクト」の活用です。
例えば、「dmesg」は起動時のシステムのメッセージを再表示するコマンドですが、起動時のメッセージはかなりの量があり、1画面で一度に見ることはできません。そこで、「more」というコマンドを使って1画面ずつ停止しながらメッセージを表示するのであれば、パイプを使って「dmesg | more」のようにコマンドを実行します(画面1)。
また、dmesgコマンドで表示されるメッセージの中で“video”を含むものだけを絞り込むなら、「grep」コマンドで「dmesg | grep -i video」のように実行します(画面2)。なお、grepコマンドの「-i」は大小文字の区別をしないという意味のオプションです。
さらに、dmesgコマンドのメッセージを「systemlog.txt」という名前でファイルに保存したいのであれば、リダイレクトを使って「dmesg > systemlog.txt」のように実行します(画面3)。
「> ファイル名」でリダイレクトすると、ファイルは常に新規作成されます。つまり、既存のファイルを指定した場合は、新しい内容でファイルが上書きされることになります。
既存のファイルに追加したい場合は「>> ファイル名」のように「>>」で指定します。指定したファイルが存在しない場合は新規作成となります(画面4)。
dmesg | grep -i video > savelog.txt
dmesg | grep -i console >> savelog.txt
※シェル変数「noclobber」がセットされていると、リダイレクト時のファイルの上書きを禁止することができます。常に「noclobber」をセットしておくには、bashではホームディレクトリの「.bashrc」ファイルに「set -o noclobber」を、tcshではホームディレクトリの「.tcshrc」に「set noclobber」を追記しておきます。シェルの設定ファイルについては、今後本連載で取り上げる予定です。
Copyright © ITmedia, Inc. All Rights Reserved.