如何在BASH中找不到文件时使cp命令安静?

Vil*_*age 22 bash cp

我搜索了map cp,但是找不到安静的选项,所以cp不会报告"没有这样的文件或目录".cp如果尝试但未能复制文件,我怎么能不打印此错误?

jay*_*ngh 31

好吧,每个人都建议重定向到/dev/null会阻止你看到错误,但这是另一种方式.测试文件是否存在以及是否存在,执行cp命令.

[[ -e f.txt ]] && cp f.txt ff.txt
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果第一次测试失败,那么cp将永远不会运行,因此没有错误.

  • @nneonneo:......除了比赛条件 (3认同)
  • 但是,在这种情况下,`cp`仍然可能会抛出其他类型的错误,例如访问被拒绝.(如果要抑制*仅*未找到的错误,这是一个很好的解决方案). (2认同)

ask*_*ish 13

如果您只想抑制错误消息:

cp original.txt copy.txt 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

如果你想抑制机器人错误消息和退出代码使用:

cp original.txt copy.txt 2>/dev/null || :
Run Code Online (Sandbox Code Playgroud)


ric*_*ici 6

一般的解决方案是将stderr重定向到bitbucket:

 cp old_file new_file 2>>/dev/null
Run Code Online (Sandbox Code Playgroud)

这样做会隐藏脚本中的任何错误,这意味着它会在各种情况下无声地失败.我使用>>而不是>重定向,以防需要使用日志文件.


ssc*_*rth 3

就像打印到STDERR 的任何错误一样,只需将其重定向到/dev/null

cp a b 2> /dev/null
Run Code Online (Sandbox Code Playgroud)