要在有图形界面的计算机上复制一个文件,你通常要把一个文件从一个窗口拖到另一个窗口,有时还要用一个修改键。另外,你可能更喜欢右键点击一个文件图标,选择复制,然后将文件图标粘贴到另一个窗口。
要在终端中复制一个文件,你可以使用cp命令,它的工作原理与mv命令完全一样,只是它复制了文件的内容,而不是将它们从一个位置移动到另一个位置。
$ cp example.txt ~/Documents
与mv命令一样,你可以在复制文件的同时 ,对其进行重命名。
$ cp example.txt ~/Documents/file.txt
在使用cp时要小心,因为它完全按照你的指示来做。默认情况下,它_不会_问你是否要将一个文件复制到另一个同名的文件上。为了保护自己,可以使用cp -interactive(简称**-i**),它以_交互式_模式运行cp,这意味着它会问你是否确定要覆盖一个现有的文件。你可以确认或取消,然后重新做cp,并将文件重命名为不同的东西,这样它就不会与现有文件冲突。
复制一个文件夹
cp命令寻找的是文件,而不是文件夹,因为文件夹并不真正存在(也就是说,它们并不是真正的数据,它们只是我们人类在逻辑上将数据划分到不同想象的容器中的标记)。要复制一个文件夹,可以使用cp --递归 (简称**-r** ),它接收文件夹中的文件_并_重新创建它们的假想容器。
$ cp -r Documents MyStuff
$ ls
Documents
Downloads
Music
MyStuff
Templates
Pictures
Videos
你可能会注意到,Linux的shell在工作时安静得可怕。这实际上是设计好的。有多少次你把计算机设置为一个任务,比如从一个驱动器复制一千个文件到另一个驱动器,但4小时后回来发现它在复制完第一个文件后就停止了,只是为了问你一些微不足道的深奥问题?
然而,有时候,从你的操作系统中得到一些反馈是很好的。通常情况下,-v开关会给命令增加 "粗暴性"。
$ cp -r --verbose Documents Stuff
'Documents/' -> 'Stuff'
'Documents/example.txt' -> 'Stuff/example.txt'
'Documents/file.txt' -> 'Stuff/file.txt'
'Documents/example.png' -> 'Stuff/example.png'
'Documents/picture.png' -> 'Stuff/picture.png'