ln 命令可以生成软链接和硬链接, 也可叫做符号链接和实体链接. 有兴趣深入理解的可以查阅相关文档, 一般的读者只需记住以下几点即可:
1. 不管是软链接还是硬链接都不会额外增加磁盘空间 (虽然实际情况可能会多占用 1 个 block)
2. 软链接会占用 1 个 inode, 而硬链接不占用 inode(想深究的可以自行查阅, 不深究的可以直接略过)
3. 硬链接不能跨文件系统, 不能链接目录 (可以得出软链接是可以的).
为了更好理解举例如下:
硬链接: 假设在当前目录有文件名为 tmp.jpg(大小为 1M), 现在为它创建硬链接 tmp-h.jpg, 那么当前目录就有了 2 个文件, 这 2 个文件除了名字不一样其他的一模一样, 但是占用的实际磁盘空间还是只有 1M, 改变任何一个文件的内容另一个文件也会跟着改变,
当你只删除 tmp.jpg 或只删除 tmp-h.jpg 时, 文件内容都还在磁盘, 只有同时删除了这 2 个文件时才会真的彻底删除该 1M 的占用.
软链接: 假设在当前目录有文件名为 tmp.jpg(大小为 1M), 现在为它创建软链接 tmp-s.jpg, 那么当前目录就有了 2 个文件, tmp-s.jpg 是一个全新的文件大小为 7bytes(等于 tmp.jpg 名称占用的字节数), 它指向 tmp.jpg(学过 c 语言的指针理解起来会很快),
改变任何一个文件的内容另一个文件也会跟着改变, 删除 tmp-s.jpg 不影响 tmp.jpg, 但是删除了 tmp.jpg 那么 tmp-s.jpg 就会失效因为它找不到它指向的文件了 .
我相信通过上面例子的解释, 你应该可以自己辨别在哪些情况选择哪种链接方式了吧.
- ###bash###
- # 常用命令选项
- # 默认硬链接
- -s #软链接
- -f #如果目标文件存在时, 直接移除后再创建 (危险)
例子:
- ###bash###
- # 为 / root/tmp.jpg 生成软链接
- ln -s /root/tmp.jpg /tmp/tmp.jpg
- # 为 / root/dir 目录生成软链接
- ln -s /root/dir /tmp/dir1
- # 为 / root/tmp.jpg 生成硬链接
- ln /root/tmp.jpg /tmp/tmp.jpg
注意:
- ###bash###
- # 假设文件夹 aaa 下有 10 个文件
- ln -s aaa bbb #生成 aaa 的软链接 bbb
- # 未来有一天当你想要删除软链接 bbb
- # 只要敲如下命令
- rm -f bbb
- # 千万别大意敲如下命令, 这样会把 aaa 里面的 10 个文件删除掉
- rm -rf bbb/
来源: http://www.bubuko.com/infodetail-2981129.html