我想在与当前目录不同的其他子目录中备份文件,如下所示:
cp /aaa/bbb/ccc/ddd/eeee/file.sh /aaa/bbb/ccc/ddd/eeee/file.sh.old
如您所见,源目录和目标目录相同,因此常见的惯例是更改为公共目录,执行副本im ./
,然后更改回原始目录。
在这种情况下是否有单行命令来完成复制?
答案 0 :(得分: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技巧来节省打字。