web-dev-qa-db-ja.com

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

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

47
Jader Dias

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

$ program > /dev/null

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

$ program &> /dev/null

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

72
theotherreceive

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

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

標準出力(デフォルトの出力)をファイルにリダイレクト(およびファイルを上書き)するには、次のコマンドを使用します。

 command > file.log

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

 command >> file.log

標準エラーをfile.logにリダイレクトするには、次を使用します。

 command 2> file.log

そして追加する

 command 2>> file.log

出力を1つのストリームに結合し、すべてを1つの場所に送信するには

 command > file.log 2>&1

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

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

 command << file.txt


詳細については、 高度なBashスクリプトガイド をご覧ください。

30
Matt Simmons

標準出力を非表示にする:

./command >/dev/null

標準出力と標準エラーを非表示にします。

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

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

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

出力を非表示にするだけで(ファイルに保存しない)場合は、次のコマンドを使用できます。

編集:

$コマンド&>/dev/null

3
Lucho

Mac OS X v10.6 (Snow Leopard)の場合:

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

stty flusho; command ;stty -flusho

ちなみに、端末からの入力を非表示にしたい場合:

stty  -echo; command ;stty  echo

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

Linuxの場合、知っているのは buntu 10.04 (Lucid Lynx)と一部のDebian/Arch Linux(以下にコメント-ありがとう、ヘンドリー)にはflusho設定がない(そして私はマンページで他の適切なものを見ることができません)。とにかく、echo設定はUbuntuで機能します。

2
vike