Linuxでシェルアプリケーションの画面出力(printf)を非表示にする方法は?
Linuxでシェルアプリケーションの画面出力(printf)を非表示にする方法は?
回答:
表示されないように、プログラムの出力をリダイレクトできます。
$ program > /dev/null
これにより、標準出力がリダイレクトされます-エラーが引き続き表示されます
$ program &> /dev/null
これにより、エラーを含むすべての出力がリダイレクトされます。
wget
あなたが使用することができ-q
、それは静かにするオプションを。
コマンドラインで利用可能な3つのIOデバイスがあります。
standard in - 0
standard out - 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(stderr)が1(stdout)に送信され、stdoutがfile.logに送信されます。
標準入力を期待するコマンドに標準入力をリダイレクトすることも可能であることに注意してください
command << file.txt
編集
詳細については、高度なBashスクリプトガイドをご覧ください。
command > file.log 2>&1
機能するかを説明できますか?
> file
2つ目のコマンドです2>&1
。最初のものは、標準をファイルにリダイレクトします。2番目のものは2番目のファイル記述子を取得し、それを最初のファイル記述子にリダイレクトします。を逆にして、を使用して標準出力を標準エラーに>&2
リダイレクトし、で標準エラーをファイルにリダイレクトできます2> file
。
Mac OS X(10.6 "Snow Leopard")の場合:
出力/エラーファイル記述子をチェックしてプログラムに知らせることなく出力を非表示にする必要がある場合は、シェルで次を使用してみてください。
stty flusho; command ;stty -flusho
または、ターミナルからの入力を非表示にするだけの場合:
stty -echo; command ;stty echo
詳細については、stty(1)のマニュアルページを参照してください。
Linuxの場合、Ubunutu(10.04 "Lucid")と一部の "Debian / Arch"(以下で説明-tnx hendry)にはflusho
設定がありません(そして、マンページに他に適切なものは表示されません) 。echo
設定はとにかくUbuntuで動作します。