今日のコマンド@パイプ

予想通り?今日はパイプについてです。。

リダイレクションがコマンドの標準出力の内容を
指定したファイルに書き込むのに対し、パイプは
標準出力を別のコマンドで再処理するための
つなぎの役目を果たします。

$ cat /var/log/maillog

上記を実行するとものすごい量のメールログの
最後の部分が1ページ分(画面に収まる分)が表示されます。
頭の方を見ようとするとスクロールしなくてはいけません。

そこで | (パイプ)を使って頭から表示させてみます。
頭の10行だけなら

$ cat /var/log/maillog | head

ですが、順番に全部見たい場合は less を
使います。
lessコマンドはページャーコマンドと呼ばれ
画面上で1ページずつ進ませて表示できます。

$ cat /var/log/maillog | less

最初の1ページが表示されるの次のページに
進みたいときはスペースキー、前に戻りたい
ときはBキーを押下します。
Enterをタイプすると1行ずつ進みます。
終了したいときはQキーです。

このようにパイプはメールログの標準出力を
1ページずつ表示するためにlessコマンドに
渡しているのです。

oba-q.comのメールサーバーから送ったメールが
届かなかった時の調査で、oba-q.comと記載のある
行だけを表示したいときは

$ cat /var/log/maillog | grep oba-q.com

とします。

更にメールログでは正常に送信された時はstatus=sent、
なにかの理由で送信されなかった時はstatus=deferred
という項目が記載されます。

ですから

$ cat /var/log/maillog | grep oba-q.com | grep status=deferred

とすれば送れなかった部分が表示されます。
送った日付や時間でもフィルタがかけられます。
このようにパイプを重ね複数の処理が可能です。

どぉでもよい?ノウハウ

$ cat /var/log/maillog | grep oba-q.com

でなくとも

$ cat /var/log/maillog|grep oba-q.com

でも大丈夫です。
スペースキー2回分お得です。(笑

ワイルドカード・リダイレクション、そして
パイプを操れるようになるともうビギナーから
卒業でしょう。

HOME

おすすめ