Как сделать команду cp тихой, если в Bash не найден файл?
Я искал map cp, но не могу найти тихую опцию, так что cp не сообщает "Нет такого файла или каталога".
Как я могу заставить cp не печатать эту ошибку, если она пытается, но не может скопировать файл?
Ответ 1
Ну, все предложили, чтобы перенаправление на /dev/null помешало вам увидеть ошибку, но вот другой способ. Проверьте, существует ли файл, и если это так, выполните команду cp.
[[ -e f.txt ]] && cp f.txt ff.txt
В этом случае, если первый тест завершится с ошибкой, cp никогда не будет работать и, следовательно, не будет ошибки.
Ответ 2
Если вы хотите подавить только сообщения об ошибках:
cp original.txt copy.txt 2>/dev/null
Если вы хотите отключить бот сообщения об ошибках и код выхода используйте:
cp original.txt copy.txt 2>/dev/null || :
Ответ 3
Общее решение - перенаправить stderr на битбакет:
cp old_file new_file 2>>/dev/null
Это скроет любые ошибки в вашем скрипте, а это означает, что он будет терпеть неудачу при различных обстоятельствах. Я использую >> вместо > в перенаправлении в случае необходимости использовать файл журнала.
Ответ 4
Как и для любой ошибки, напечатанной в STDERR, просто перенаправьте ее на /dev/null: