关于Linux中文件,链接的一些思考
在Unix系统中,操作系统为磁盘上的文本与图像,鼠标键盘操作,网络交互等IO操作设计了一组通用API。
使他们被处理的时候可统一用字节流的方式。所以说,除了进程之外,其他的一切均可看做文件。
Linux系统中,不区分文件和目录。所谓的目录,只是记录了其他文件名的文件。
所以,如果当前目录下有一个文件a,那么使用 mkdir a 创建a目录的时候会出错。
Linux将设备当做文件来处理,比如,当插入U盘的时候,把U盘看成IO设备,使用read,write,像操作文件一样读写设备。
在创建硬链接的时候,我们不能跨文件系统创建。原因是:
Linux挂载多个文件系统后会出现inode号重复的现象。也就是inode不是唯一的。
比如,/dev与/root使用的文件系统可能不同,inode号可能在这两个目录下会重复
硬链接不能对目录创建,原因是什么?
当我们执行 ls -l 命令的时候,会看到 . 与 .. 两个特殊的目录,这两个目录是两个系统生成的硬链接,我们无法修改。
ok,如果我们在本目录下创建父目录的硬链接,那会出现目录环。
当使用du命令用来查看磁盘占用情况的时候,进入本目录,遍历统计文件目录大小的时候,会造成死循环。
为什么软链接可以指向目录?
因为软链接文件能进行特殊处理
而Linux系统不能区分创建硬链接之后,而源文件和硬链接文件的区别(即使通过timestamp也无法判断)
为什么要使用链接?使用链接有什么好处?
共享,隐藏文件路径,权限安全,节省存储
关于权限安全,我们可以对软链接文件设置文件属性和权限,这样他人访问源文件就有了安全保证
(对于硬链接文件不能这么干,硬链接文件与源文件实时同步,如上文所述,无法区分)
另外注意,创建软链接文件的时候,使用绝对路径较好。
因为使用相对路径创建软链接文件之后,如果移动了软链接文件,那么该软链接文件则成了死链接