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

时间:2014-08-16 06:00:44

标签: bash cp

我搜索了map cp,但找不到安静的选项,因此cp不会报告“没有这样的文件或目录”。如果cp尝试但未能复制文件,如何使{{1}}不打印此错误?

6 个答案:

答案 0 :(得分:30)

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

[[ -e f.txt ]] && cp f.txt ff.txt

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

答案 1 :(得分:12)

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

 cp original.txt copy.txt 2>/dev/null

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

cp original.txt copy.txt 2>/dev/null || :

答案 2 :(得分:6)

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

 cp old_file new_file 2>>/dev/null

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

答案 3 :(得分:2)

对于打印到STDERR的任何错误,只需将其重定向到/dev/null

cp a b 2> /dev/null

答案 4 :(得分:1)

重定向:

cp ... 2>/dev/null

答案 5 :(得分:0)

(define listo
  (lambda (l)
    (conde
     ((nullo l) #s)
     ((pairo l)
      (fresh (d)
             (cdro l d)
             (listo d)))
     (else #u))))

(define nullo
  (lambda (x)
    (== x '())))

(define pairo
  (lambda (p)
    (fresh (a d)
           (conso a d p))))

(define cdro
  (lambda (p d)
    (fresh (a)
           (== (cons a d) p))))

(define conso
  (lambda (head tail result)
    (== (cons head tail) result)))

ignore-missing-args-被忽略的错误是与不存在的源文件有关的错误