回答:
次の例では、標準出力をnullデバイス(ビットバケット)に送信します。
scriptname >/dev/null
エラーメッセージもそこに送信する場合は、次のいずれかを使用します(最初のシェルはすべてのシェルで機能しない場合があります)。
scriptname &>/dev/null
scriptname >/dev/null 2>&1
scriptname >/dev/null 2>/dev/null
また、メッセージを記録したいが表示しない場合は/dev/null
、次のような実際のファイルに置き換えます。
scriptname &>scriptname.out
完全を期すために、Windows cmd.exe(「nul」は「/ dev / null」に相当)の下では、次のようになります。
scriptname >nul 2>nul
echo foo > $(tty)
は、スクリプトを入力して実行します./test.sh &> /dev/null
-出力は引き続きターミナルに出力されます。もちろん、そのようなコマンドを使用しないスクリプトを作成している場合は問題ありません。
/dev/null
はCygwinに存在するため、を使用する必要はありませんnul
。
何かのようなもの
script > /dev/null 2>&1
これにより、標準出力とエラー出力が防止され、両方がにリダイレクトされます/dev/null
。
2>/dev/null
試す
: $(yourcommand)
:
「何もしない」の略です。
$()
あなたの命令です。
0
ます。返されるステータスコードは常に(成功)です。false
常に1
(失敗)を返すコマンドを使用した例を見てみましょう。たとえばが( echo foo | tee file ; false ) && echo bar
表示されますfoo
。トリックを使用して出力を抑制します( : $(echo foo | tee file ; false) ) && echo bar
。ただしbar
、戻りステータスコードは0
(これはからの戻りステータスコードではありません)という意味false
です。この制限を提供して回答を更新してください。乾杯
DUMMY=$(yourcommand)
ですか?あなたが述べた制限はありません。:)
DUMMY=$( echo foo | tee file ; false ) && echo bar
は何も表示しません。そして、コマンドがDUMMY=$( echo foo | tee file ; true ) && echo bar
表示されますbar
。それを
状況によっては、代替案として、コマンドの結果を変数に割り当てる方法があります。
$ DUMMY=$( grep root /etc/passwd 2>&1 )
$ echo $?
0
$ DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
1
Bashおよび他のPOSIXコマンドラインインタープリターは変数の割り当てをコマンドと見なさないため、現在のコマンドの戻りコードが尊重されます。
注:typeset
or declare
キーワードを使用した代入はコマンドと見なされるため、ケースで評価される戻りコードは代入自体であり、サブシェルで実行されるコマンドではありません。
$ declare DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
0
andynormancxのpostと同様に、これを使用します(UNIX環境で作業している場合)。
scriptname > /dev/null
または、これを使用できます(Windows環境で作業している場合)。
scriptname > nul
Linux Documentation Projectからのこの例を見てください。
3.6サンプル:stderrおよびstdout 2ファイル
これにより、プログラムのすべての出力がファイルに配置されます。これは、コマンドに完全な無音を渡す必要がある場合に、cronエントリに適しています。
rm -f $(find / -name core) &> /dev/null
つまり、この単純なリダイレクトを使用できます。
/path/to/command &>/dev/null
スクリプトでは、出力を行うことがわかっている行に以下を追加できます。
some_code 2>>/dev/null
または、あなたも試すことができます
some_code >>/dev/null
>>
)なのですか?