Linuxでシェルアプリケーションの出力を非表示にする方法


回答:


68

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

$ program > /dev/null

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

$ program &> /dev/null

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


最初のものはwgetでは機能しませんでした
Jader Dias

そのため、wgetは出力の一部にstderrを使用します。2つ目は動作するはずです。
もう1つは、

2
ちなみに、wgetの出力をログファイルに保存することもできます。そのため、ダウンロードが機能しなくなったとき/停止した場合は、その理由を把握できます。とにかくスクリプト内にある場合。これが1回限りの実行である場合、はい、ゴミ箱に
Matt Simmons

1
wgetあなたが使用することができ-q、それは静かにするオプションを。
pkhamre

/ dev / ttyに直接書き込まれた出力を抑制する方法はありますか?
d11wtq 14

30

コマンドラインで利用可能な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機能するかを説明できますか?
コリークライン

どのくらいのレベルを知りたいですか?
マットシモンズ

3
@nomoreink:これは実際には2つのコマンドで、1つは> file2つ目のコマンドです2>&1。最初のものは、標準をファイルにリダイレクトします。2番目のものは2番目のファイル記述子を取得し、それを最初のファイル記述子にリダイレクトします。を逆にして、を使用して標準出力を標準エラーに>&2リダイレクトし、で標準エラーをファイルにリダイレクトできます2> file
ヒューバートカリオ

12

隠す stdout

./command >/dev/null

隠すstdoutstderr

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

ターミナルの非表示stdoutおよびstderrリリース(バックグラウンドでコマンドを実行)

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

3

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

編集済み:

$コマンド&> / dev / null


これにより、出力がnullというファイルにリダイレクトされます
。theotherは

これは、ヌルファイル生成
Jaderディアス

1
/ dev / nullを意味しなかったでしょうか?
バブ

1
はい、私は持っています、バブ。$ command&> / dev / nullを意味しました。タイピングが速すぎることを謝ります。
ルチョ

2

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で動作します。


Debian / Archでのデフォルトのsttyにはこれらのオプションがありません。
ヘンドリー

もちろん、私はOPのOSでさえなかったことに言及すべきでした。投稿を編集しました。
vike
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.