如果您是Linux的新手,值得一提的是,该命令行是一个非常强大的工具,能够通过图形界面完成几乎所有可以执行的任务。 但是,通常情况下,您会发现自己在命令行上执行简单的任务。 一个这样简单的任务是复制文件/目录。
Linux cp命令提供了通过命令行复制文件和目录的权力。 在本教程中,我们将使用易于理解的示例来讨论此工具的基本用法。 但在我们这样做之前,值得分享的是,本文中提到的所有示例/指令都已在Ubuntu 16.04LTS上进行了测试。
Linux cp命令
需要在命令行上执行复制操作,cp应该是你的go-to命令。 根据其手册页,该工具可用于复制文件和目录。 这是命令的通用语法:
cp [OPTION]... SOURCE DEST
上述命令将SOURCE复制到DEST。 以下Q&A类型的示例将使您更好地了解该工具的工作原理。
Q1。 如何执行基本的复印操作?
cp的基本用法非常简单,您只需指定源和目的地即可。 例如,以下命令将当前工作目录中的'file1'复制到Desktop目录中:
cp file1 ~/Desktop
Q2。 覆盖前如何使cp提示?
如果复制文件的目的地已经包含一个同名文件,那么cp命令将自动覆盖现有文件。 但是,如果需要,可以在完成覆盖之前使工具提示。 这可以通过以交互模式运行cp来实现,这是使用-i选项启用的。
例如:
cp -i file1 ~/Desktop/
因此,您可以在上面的屏幕截图中看到, -i选项使cp向用户询问是否覆盖目标目录中同名的现有文件。
Q3。 如何强制cp不覆盖现有文件?
有时,您可能不希望cp覆盖现有文件,而且您也不希望启用我们刚才在上一节中讨论的交互式选项。 那么对于这种情况,您可以使用-n命令行选项。
例如:
cp -n file1 ~/Desktop/
请注意,-n覆盖-i选项,即使您使用-i与-n,该命令也不会以交互模式运行。
Q4。 如何使用cp复制目录?
默认情况下,cp命令仅适用于文件。 如果您尝试复制目录,您可能会收到“cp:omitting directory”错误。 因此,无论何时需要复制目录,请使用-r命令行选项。
例如:
cp -r dir ~/Desktop
Q5。 如何使用cp命令创建符号链接?
如果需要,您也可以要求cp创建一个符号链接,而不是实际复制一个文件。 这可以使用-s命令行选项来完成。
例如:
cp -s ~/htf-daily/file1 ~/Desktop/
Q6。 如何使cp覆盖目标文件只有源是较新的?
有时,要求是仅在源文件较新时覆盖现有文件 - 将此过程视为更新文件。 这可以使用-u命令行选项来完成。
例如,假设要将驻留在当前工作目录中的'file1'复制到Desktop目录,但是目标文件名已经有一个名为'file1'的文件。 而且,如果源码比目的地更新,您只想复制。 这可以使用以下命令完成:
cp -u file1 ~/Desktop
Q7。 如何使cp不遵循来源的符号链接?
默认情况下,cp命令在源代码中遵循符号链接。 这意味着,例如,如果您尝试将一个符号链接的文件复制到另一个文件,那么默认情况下,复制操作是在符号链接引用的文件上执行的。 我的意思是,如果〜/ Desktop / file1是〜/ htf-daily / file1的符号链接,并尝试将〜/ Desktop / file1复制到〜/ Downloads ,那么〜/ htf-daily / file1将被复制到。
但是,如果要求是复制符号链接本身,则可以使用-P命令行选项来实现,这可以使cp不遵循源代码中的符号链接。 所以在我们的情况下,命令是:
cp -P ~/Desktop/file1 ~/Downloads/
Q8。 如何仅复制文件属性?
有时,要求只能是复制属性(如所有权和时间戳),而不是复制文件的内容。 这可以使用--attributes-only命令行选项以及--preserve选项来实现。
例如,file1具有以下属性:
-rw-rw-r-- 1 root himanshu 97 Jun 14 17:18 file1
而file2具有以下属性:
-rw-rw-r-- 1 root himanshu 179 May 25 15:09 file2
注意 :您可以使用ls命令为文件获取这些属性。 有关ls的更多信息,请来这里 。
并且要求是复制file2的属性,并将它们用于file1,然后这是如何完成的:
cp --attributes-only --preserve file2 file1
这是上述命令行动:
结论
您同意,cp命令的基本用法不是很难理解。 在本教程中,我们尝试覆盖大部分有用的命令行选项。 最后尝试一下,之后,转到工具的手册页,看看命令提供的其他功能/选项。 如有任何疑问或疑问,请在下方留下评论。