string.h
私のコンピュータで同じ名前のすべてのファイルを見つけて特定のフォルダにコピーするbashスクリプトを作成する必要があります。私のコードは次のとおりです。
#!/bin/bash
sudo find / -type f -name "string.h" -exec cp {} $HOME/MyDocuments
ただし、スクリプトの実行中にコンソール端末に「Permission Denied」エラーメッセージが表示されます。このメッセージを受信したくない場合はどうすればよいですか?コンソール端末は清潔でなければなりません。
答え1
ユーザーが読み取り権限のないディレクトリに移動しようとした場合、またはアクセス権限のないディレクトリに書き込みを試みると、「権限の拒否cp
」エラーは「正常」です。 stderrをリダイレクトすることでこれを抑制できます。
#!/bin/bash
sudo find / -type f -name "string.h" -exec cp {} $HOME/MyDocuments \; 2>/dev/null
このモードは、2>/dev/null
標準エラーではなくすべてのエラーを「どこにでも」送信することを意味します。
ただし、エラーメッセージを送信しても/dev/null
コマンドに読み取りまたは書き込み権限がないというエラーは解決されません。