Linuxでシェルアプリケーションの画面出力(printf)を非表示にするにはどうすればよいですか?
プログラムの出力をリダイレクトして、表示されないようにすることができます。
$ program > /dev/null
これにより、標準出力がリダイレクトされます-エラーは引き続き表示されます
$ program &> /dev/null
これにより、エラーを含むすべての出力がリダイレクトされます。
コマンドラインでは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スクリプトガイド をご覧ください。
標準出力を非表示にする:
./command >/dev/null
標準出力と標準エラーを非表示にします。
./command >/dev/null 2>&1
標準出力と標準エラーを非表示にし、ターミナルを解放します(バックグラウンドでコマンドを実行します):
./command >/dev/null 2>&1 &
出力を非表示にするだけで(ファイルに保存しない)場合は、次のコマンドを使用できます。
編集:
$コマンド&>/dev/null
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で機能します。