
特定のコンピューターを最適な設定で自動的に構成するシェル スクリプトを作成しています。このスクリプトからの出力を、エコー出力を除いてすべて非表示にしたいのですが、可能ですか?
答え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
stdoutをリダイレクトするには、以下を/dev/null
追加します。
1>/dev/null
出力を生成するスクリプトの各行の末尾に。
同じようにエラーをリダイレクトするには、
2>/dev/null
ほとんどのコマンドには、コンソールへの通常の出力をオフにするオプションもあります-q
。使用するコマンドのマニュアルページを確認してください。