Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 源和目标路径相同时的单行复制命令_Linux_Backup_Cp - Fatal编程技术网

Linux 源和目标路径相同时的单行复制命令

Linux 源和目标路径相同时的单行复制命令,linux,backup,cp,Linux,Backup,Cp,我想备份与当前目录不同的其他子目录中的文件,如下所示: cp /aaa/bbb/ccc/ddd/eeee/file.sh /aaa/bbb/ccc/ddd/eeee/file.sh.old 正如您所看到的,源目录和目标目录都是相同的,所以常见的惯例是更改为公共目录,执行复制im/,然后更改回原始目录 在这种情况下,是否有单行命令来完成复制?是。使用以下命令: 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
正如您所看到的,源目录和目标目录都是相同的,所以常见的惯例是更改为公共目录,执行复制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技巧来保存键入内容。

这有编程问题吗?如果您在该路径中使用cd,则可以使用“/”我应该补充,对于您给出的特定示例,您也可以重用文件名:
cp/aaa/bbb/ccc/ddd/eeee/file.sh{,.old}
这将为您节省更多的打字时间,也可能会减少打字错误的机会,因为您可以使用制表符补全来到达原始路径。