linux文件名查找及软硬链接

                                      Linux文件查找与软硬链接

一 文件查找

Linux中查找文件或者命令主要有两种方式

脚本文件名的查询

顾名思义,就是查找可以执行命令的文件所在的路径地址

which [-a] command

本命令主要是根据当前path中的路径来查找的

不加-a 只会列出查找到的一个路径,加了-a会列出查找到的所有路径

文件名的查找

whereis [-bmsu] 文件名或目录名

-b:只找二进制文件

-m:只找说明文件manual路径下的文件

-s:只找source源文件

-u:查找不再上面的其他特殊文件

whereis不是根据根据当前path查找的,它主要是对全系统进行扫描查询

locate [-ir] keyword

-i: 忽略大小写

-r: 正则表达式

whereis locate都是通过读取linux系统中的数据库文件来查找的,速度比较块

locate寻找的数据主要是在已经创建的数据库/var/lib/mlocate里查找,可以手动更新该数据库

直接利用updatedb

updatedb:根据/etc/updatedb.conf的设置去查找系统硬盘内的文件名,并且更新/var/lib/mlocate

find命令

find [path] [option] [action]

二 软硬链接

当在linux中新增一个目录的时候,会分配一个inode和一块block给该目录。

Inode记录该目录的相关权限与属性,并且记录分配到的那块block号码。

Block记录在逐个目录下的文件名与该文件名所占用的inode号码数据

文件名只与目录有关,而文件内容则与inode有关

1硬链接:通过文件系统的inode链接来产生新的文件名,而不是产生新的文件

hard link只是在某个目录下新建一个文件名连接到某inode号码的关联记录,注意这里新建文件名主要是在为目录已经分配的block中新建。当你创建一个硬链接的时候,你所生成的文件和你指向的文件完全相同,仅仅只是文件名不同而已。

 

如图所示,在inode中,12号均为两个目录所分配的inode号码,主要记录该目录的基本信息,权限等,当在2号目录所对应的block中创建一个硬链接的时候,此时,它就直接指向real号的inode,从而根据real所指向的block中的文件来获取文件的内容。

硬链接的优点:

1) 删除任何一个“文件名”,只要还有一个指向该inode的文件,则该文件始终存在,并且非常安全的

2) 凡是通过硬链接所创建的文件名,对其任何文件名进行实际的编辑,均是作用于所关联的那个inodeblock的,均能进行数据的修改。

  1. 通过hard link创建设置的文件,磁盘的空间与inode数目并不会改变

硬链接的限制性:

  1. 不能跨越文件系统。也就是一般来说当你两个分区具有不同的文件系统时候,就不能进行链接。

  2. 不能连接到目录。因为一旦要连接到目录的话,那么该目录下的所有文件名都要被创建,复杂度很高。

2软链接:形如windows的快捷方式的文件,可以快速链接到目标文件或目录

symbolic link,创建一个独立的文件,而该文件会让数据的读取指向它链接的那个文件的文件名

该链接文件和被指向的链接文件是独立的文件,拥有保护同的inode编号。链接文件的重要内容就是它会写上目标文件的“文件名”

 

 

如图所示,1inode是我们创建的那个软链接文件的编号,它指向了分配的block块,该文件内容保存的就是目标文件的“文件名”,然后通过层层的目录inode来查找它所指向的真是的inode。然后再读取 该文件的具体内容

 

当你在linux下创建软链接后,改动连接文件其实就是改动源文件,不过你把连接文件删除,对源文件不影响,但是如果对连接文件所指向的数据进行修改删除,或者删除该目录下的文件,则直接会实际操作源文件或目录的

 

Usage

ln [-sf] 源文件 目标文件

-s:如果不加任何参数就进行链接,那就是hard link,加上-s就是 symbolic link

-f:如果目标文件存在,则就将目标文件直接删除再创建

你可能感兴趣的:(linux)