
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 では設定は機能します。