夜丶有雪

青青子衿,悠悠我心。

ln 命令的使用

ln 这是linux中一个非常重要命令。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
例如:

/*(在/usr/sbin/创建php 链接到/usr/local/php/bin/php)*/
[root@ziscn ~]# ln -s /usr/local/php/bin/php /usr/sbin/php

-s 是代号(symbolic)的意思。

这里有两点要注意
第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
第二,ln的链接又分为符号链接和硬链接两种,符号链接就是ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是符号链接还是硬链接,文件都保持同步变化。
如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls -l命令去察看,就可以看到显示的link的路径了。

硬链接与符号链接的区别在于硬链接与原来的文件有相同的i-node即它们是无差别的指向一个存储数据的空间的索引.
硬链接产生的文件与之前的文件名具有相同的意义,而且,由于都是无差别的指向同一个存储空间,所以对硬链接产生的文件进行的操作,实际上都是对于那一个存储空间进行的操作。
而且,当一个存储空间,具有几个硬链接时,删除其中的一个,并不会对存储空间进行操作,所以其它的硬链接不会受到影响。
此种方式,类似于C语言里的指针,当一个存储空间里面有几个指针指向它时,删除其中的一个指针并不会带来存储空间被回收的操作。

而符号链接可以理解为指向原来的文件的索引的索引.它与原来的文件是两个不同的文件.所以这样的话假如存在三个文件的话,a是原文件,b是a的硬链接,而c 是a 的符号链接.刚不管是那个文件或者目录的内容改变都会使得其它的文件的内容改变.对于原文件的删除,则c将变的不可用,而对b却没有任何的影响.b,c的删除不会对任何文件有影响.
注:
1. 对于ln命令默认是建立硬链接的.
2. -s不是soft(软)的意思,而是symbolic(符号)的意思,因此应该是符号链接。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注