我想在与当前目录不同的其他子目录中备份文件,如下所示:
cp /aaa/bbb/ccc/ddd/eeee/file.sh /aaa/bbb/ccc/ddd/eeee/file.sh.old
如您所见, source 和 dest dir 是相同的,因此常见的约定是更改为 common 目录,执行复制 im ./
,然后更改回原始目录。
在这种情况下是否有单行命令来完成复制?
是的。用这个:
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 技巧来节省打字时间。