連載
» 2016年03月24日 05時00分 公開

“応用力”をつけるためのLinux再入門(6):パイプとリダイレクトでコマンドを組み合わせて実行しよう (4/4)

[西村めぐみ,@IT]
前のページへ 1|2|3|4       

エラーメッセージ(標準エラー出力)は表示しない

 エラーメッセージは不要、という場合は「2> /dev/null」で標準エラーメッセージを「/dev/null」へリダイレクトします(画面10)。「/dev/null」というのは「ヌルデバイス」という特別な場所で、ここへの出力は全て破棄され、どこにも出力されず、保存もされません。

画面10 画面10 エラーメッセージを/dev/nullにリダイレクトして検索結果だけを画面に表示(bash)

検索結果(標準出力)だけをmoreコマンドで表示する

 findコマンドで見つかった結果が多い場合は、標準エラー出力を「/dev/null」にリダイレクトした後にパイプでmoreコマンドに渡すことで、結果を1画面ずつ表示することができます(画面11)。

画面11 画面11 エラーメッセージを「/dev/null」にリダイレクトして検索結果だけをmoreで表示(bash)

※tcshの場合“標準エラー出力だけを「/dev/null」へリダイレクトする”といった指定が難しいので、いったん別ファイルで保存して参照するとよいでしょう。また、今回のfindコマンドに限れば「find / -name '*.log' |& grep -v "許可"」のようにして、grepコマンドでエラーメッセージを取り除くという方法もあります。「grep -v 文字列」は指定した文字列が含まれていない行を表示するという意味で、「文字列」部分にはエラーメッセージにだけ使われるフレーズを指定しましょう。さらに、moreを付けたいならば「find / -name '*.log' |& grep -v "許可" | more」とします。なお、この方法はbashでも使えます。



エラーメッセージ(標準エラー出力)だけをmoreコマンドで表示する

 先ほどとは逆に、エラーメッセージだけをmoreコマンドで表示したい場合は、サブシェルを使い「(find / -name '*.log' > /dev/null) |& more」のようにします。これは、()の中でいったん標準出力の内容を/「dev/null」に捨てて、あらためて全ての出力をmoreに渡す、というようなことをしています(画面12)。

画面12 画面12 標準エラー出力のみ表示する。表示にはmoreを使う(bash, tcsh共通)

 また、bashの場合は「find / -name '*.log' 2>&1 1>/dev/null | more」のようにすることもできます(画面13)。「2>&1」は2番つまり標準エラー出力を、1番つまり標準出力と同じ所へリダイレクトする、という意味です。

画面13 画面13 「2>&1」で標準エラー出力を標準出力と同じ所へリダイレクトする。表示にはmoreを使う(bash)

 最後に、今回紹介したパイプとリダイレクト、標準出力と標準エラー出力を、以下の表1表2にまとめました。意味や使い方が分からなくなった際には参考にしてください。

標準出力 標準エラー出力 両方
リダイレクト > または 1> 2> &>
リダイレクトへの追加 >> または 1>> 2>> &>>
(使い方) command > file command 2>file command &> file
パイプ | なし |&
(使い方) command | command (※1) command |& command
表1 パイプとリダイレクト(bash)
※1 標準エラー出力だけをパイプで別コマンドに渡したい場合はサブシェルを使い「( command > /dev/null ) | & command」のようにするか、「command 2>&1 1>/dev/null | command」のようにする(本文参照)

標準出力 標準エラー出力 両方
リダイレクト > なし >&
リダイレクトへの追加 >> >>&
(使い方) command > file (※2) command >& file
パイプ | なし |&
(使い方) command1 | command2 (※3) command1 |& command2
表2 パイプとリダイレクト(tcsh)
※2 標準出力と標準エラー出力を別々のファイルに保存したい場合はサブシェルを使い「(command > file1) >& file2」のようにする(本文参照)
※3 標準エラー出力をだけパイプで別コマンドに渡したい場合はサブシェルを使い「( command > /dev/null ) | & command」のようにする

筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N・PC-486DXからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。