私はremove.sh
以下を含みます:
rm -v test.tmp
私はinstall.sh
以下を含みます:
script remove.log -c './remove.sh'
存在するかどうかにかかわらず、画面に関連するメッセージは表示されませんが、test.tmp
スクリプトコマンドが生成されるのを確認するにはどうすればよいですか?rm
removed 'test.tmp'
rm: cannot remove 'test.tmp': No such file or directory
remove.log
答え1
あなたの質問が「コマンドのstderr出力を抑制する方法」の場合、答えは次のようになります。
command 2> /dev/null
これにより、stderr(ファイル記述子2とも呼ばれます)をリダイレクトして、/dev/null
受信した内容をすべて削除します。
ただし、このrm
コマンドは、-f
ファイルが存在しない場合にエラーメッセージが生成されないようにするフラグをサポートします。
$ rm file_that_does_not_exist
rm: file_that_does_not_exist: No such file or directory
$ rm -f file_that_does_not_exist
$
答え2
script
これは過剰です。はい、うまくいきます。しかし、これはスクリプトの目的ではありません。スクリプトは、TTYに直接アクセスし、STDOUT / STDERRを使用しないアプリケーション用です。
デフォルトのシェルリダイレクトを使用すると、これを簡単に実行できます。
./remove.sh &> remove.log