stdout、stderr、およびロギングにスクリプトコマンドを使用する

stdout、stderr、およびロギングにスクリプトコマンドを使用する

私はremove.sh以下を含みます:

rm -v test.tmp

私はinstall.sh以下を含みます:

script remove.log -c './remove.sh'

存在するかどうかにかかわらず、画面に関連するメッセージは表示されませんが、test.tmpスクリプトコマンドが生成されるのを確認するにはどうすればよいですか?rmremoved 'test.tmp'rm: cannot remove 'test.tmp': No such file or directoryremove.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

関連情報