
最適な設定で特定のコンピュータを自動的に構成するシェルスクリプトを作成しています。エコー出力を除いて、このスクリプトのすべての出力を非表示にしたいと思います。可能ですか?
答え1
スクリプトを起動します。
exec 3>&1 1>/dev/null 2>&1
これはstdoutの元のファイル記述子を&3に保存し、stdoutとstderrを/ dev / nullにリダイレクトします。何かを印刷したいときはいつでも、出力を&3にリダイレクトします。たとえば、次のようになります。
echo "This message won't be output"
echo "But this one will" >&3
この詳細を非表示にするには、fd 3に対応する関数を定義できます。
say() {
echo >&3 "$@"
}
say "This goes to the log"
答え2
/dev/null
標準出力を次にリダイレクトできます。
1>/dev/null
出力を生成するスクリプトの各行の末尾にあります。
以下を追加して、同じ方法でエラーをリダイレクトできます。
2>/dev/null
ほとんどのコマンドには、コンソールの一般出力をオフにするオプションもあります-q
。使用しているコマンドのマンページを確認してください。