1

我想在与当前目录不同的其他子目录中备份文件,如下所示:

cp /aaa/bbb/ccc/ddd/eeee/file.sh /aaa/bbb/ccc/ddd/eeee/file.sh.old

如您所见, source 和 dest dir 是相同的,因此常见的约定是更改为 common 目录,执行复制 im ./,然后更改回原始目录。

在这种情况下是否有单行命令来完成复制?

4

1 回答 1

2

是的。用这个:

cp /aaa/bbb/ccc/ddd/eeee/{file.sh,file.sh.old}

花括号将导致字符串的第一部分重复用于以逗号分隔的每个项目。Bash 将上述内容扩展为两个单独的路径,然后将其传递给cp. 要查看 Bash 将传递给 的内容cp,只需echo在开头添加一个:

echo cp /aaa/bbb/ccc/ddd/eeee/{file.sh,file.sh.old}

您将看到这会产生您的原始陈述:

cp /aaa/bbb/ccc/ddd/eeee/file.sh /aaa/bbb/ccc/ddd/eeee/file.sh.old

您只是在使用 Bash 技巧来节省打字时间。

于 2013-02-06T21:00:01.500 回答