有谁知道我在使用 cp 时如何关闭交互模式?
我正在尝试将一个目录递归地复制到另一个目录中,对于每个被覆盖的文件,我必须回答“y”。
我正在使用的命令是:
cp -r /usr/share/drupal-update/* /usr/share/drupal
但我被要求确认每个覆盖:
cp: overwrite `./CHANGELOG.txt'? y
cp: overwrite `./COPYRIGHT.txt'? y
cp: overwrite `./INSTALL.mysql.txt'? y
cp: overwrite `./INSTALL.pgsql.txt'? y
...
我正在使用 ubuntu 服务器版本的 jaunty。
谢谢!
执行:
查看是否
cp
已别名为cp -i
在这种情况下运行:
忽略别名
cp -f 不会要求确认(这很强制)所以这样做
是的,
cp
命令是交互式的原因是因为在许多常见的 shell 中,默认情况下副本带有别名,因为cp -i
这可以通过运行命令找到,如下所示:输出将是
alias cp='cp -i'
有不同的方法来解决它。解决方案是:
解决方案 1.在系统中/永久设置该会话的别名,或为 cp 命令卸载别名。
unset alias:将删除该命令的别名。
unalias cp
或者
重置别名:
alias cp='cp'
上面的命令会将别名设置为
cp
只是cp
它自己而不是cp -i
. 因此,您可以在没有交互模式的情况下仅针对该终端会话(临时)运行任意数量的复制命令。要使其永久化,您可以在各个文件中重置别名说解决方案 2.在复制命令的开头
cp
使用反斜杠运行命令。\
\cp foo.log /tmp/
这将有效地忽略
cp
仅针对该命令的命令的别名。推论: 如果您打算运行大量
cp
命令并且想要关闭交互模式,则解决方案 1 可以将其设置为临时或永久。如果您只有几个
cp
命令并且不想重置别名,Solution2 很好,这会很好。