Mac 命令学习-每日一贴之cp
相关概念
Symbolic links
Symbolic links/soft links可以
通过ln -s target/file/or/dir link/path
来创建。我创建了针对文件和文件夹的softlink和alias,通过命令可以观察它们之间的区别。
1 | $ ls -lo@ |
我们可以看到softlink是通过文件信息来识别的,而alias是通过拓展属性来进行实现的,也就是说alias只有在apple 的Finder下有用,在其他地方他就是一个普通的文件。
如果我们链接到一个目录的话,alias因为是一个文件自然不能够cd进去,而softlink是可以cd进去的。
Hard link
与softlink相对应,与softlink不同,hardlink不是一个“快捷方式”,而是一个真实存在的文件。文件可以理解成磁盘上一块内存,而我们在终端和GUI看到的“文件”只是指向了那块内存,所以我们可以有多个”文件”指向同一块内存。这就是hardlink干的事情。hardlink是不允许针对一个目录创建的,因为这样会破坏文件系统的结构。
常用参数
-f
- 将覆盖目标文件,并不做提示。-n
- 不覆盖目标文件。-r
- 这个是-R
- 如果源文件是一个目录的话,递归拷贝到目标路径。如果源文件以/
结尾,那么源文件夹里的内容将被拷贝到目标路径,如果不指定则是拷贝整个文件夹。-H
- 与-R
配合使用,保持原有的softlink。-P
- 与-R
配合使用,不保持原有的softlink,这个是递归拷贝的时候默认的选项。-v
- 与-R
配合使用,打印出所有被拷贝的文件。-p
- 将保护原始文件的修改时间、访问时间、flie flag,文件模式等信息。
具体场景
拷贝单个文件
1 | cp file1.txt ../file2.txt |
拷贝多个文件
1 | cp file1.txt file2.cpp file3.cs test/src |
拷贝符合某个文件名规则的文件
cp支持简单的通配符。
1 | cp *.zip package |
拷贝整个目录,包括子目录,并维持文件的修改时间不变
1 | cp -RpH dir1 dir2/src |