Linux でシェル アプリケーションの出力を非表示にするにはどうすればよいですか?

Linux でシェル アプリケーションの出力を非表示にするにはどうすればよいですか?

Linux でシェル アプリケーションの画面出力 (printf) を非表示にするにはどうすればよいですか?

答え1

プログラムの出力をリダイレクトして、表示されないようにすることができます。

$ program > /dev/null

これにより標準出力がリダイレクトされます - エラーは表示されます

$ program &> /dev/null

これにより、エラーを含むすべての出力がリダイレクトされます。

答え2

コマンドラインで使用できる I/O デバイスは 3 つあります。

 standard input  - 0
 standard output - 1
 standard error  - 2

標準出力(デフォルト出力)をファイルにリダイレクト(ファイルを上書き)するには、

 command > file.log

file.logに追加するには、2つの>sを使用します。

 command >> file.log

標準エラーをファイル.logにリダイレクトするには、

 command 2> file.log

そして追加する

 command 2>> file.log

出力を1つのストリームにまとめ、すべてを1か所に送信する

 command > file.log 2>&1

これは2(標準エラー)を1(標準出力)に送信し、標準出力をfile.logに送信します。

標準入力を、標準入力を期待するコマンドにリダイレクトすることもできることに注意してください。

 command << file.txt


詳細については、高度な Bash スクリプト ガイド

答え3

標準出力を非表示:

./command >/dev/null

標準出力とエラー出力を非表示にする:

./command >/dev/null 2>&1

標準出力とエラー出力を非表示にしてターミナルを解放します (コマンドをバックグラウンドで実行します)。

./command >/dev/null 2>&1 &

答え4

のためにMac OS X v10.6(ユキヒョウ):

出力/エラー ファイル記述子をチェックしてプログラムに知らせずに出力を非表示にする必要がある場合は、シェルで次のように使用してみてください。

stty flusho; command ;stty -flusho

あるいは、ターミナルからの入力を非表示にしたいだけの場合:

stty  -echo; command ;stty  echo

詳細についてはstty(1)のマニュアルページを参照してください。

Linuxに関しては、私が知っているのはウブントゥ 10.04(Lucid Lynx) および一部の Debian/Arch Linux (以下にコメントしました - ありがとう、hendry) には設定がありませんflusho(また、man ページには他に適切なものはありません)。echoいずれにしても、Ubuntu では設定は機能します。

関連情報