摘录来自: [中] 赵鑫磊, [加] Jie Zhang(张洁). “Linux就是这个范儿。” Apple Books.
文件属性的展现结构
drwxrwxr-x 12(连接数) mirsery(拥有者) mirsery(用户组) 4096(文件大小) Sep 17 16:49(最后修改日期) reps
-rw-r----- 1(连接数) redis redis 58835 Mar 5 2019 redis.conf
第一个字符用于描述文件类型,可取的值有: -、d、l、b、c、s和p。
- ` 代表这是一个普通文件
- d 代表这是一个目录
- l 代表这是一个软链接,硬链接没有特殊标记
- b 块设备,如磁盘等保存大块数据的设备
- c 字符设备,如鼠标、键盘等需要连续串行读写的设备
- s 代表套接字socket文件,一般使用Unix domain socket的时候回创建这种类型的文件
- p 命名管道文件
剩下的代表拥有者、所属组、其他 的权限。 - r 可读 4
- w 可写 2
- x 可执行 1
文件连接数
Linux系统使用的文件系统是一种基于inode的文件系统。每一个新创建的文件都会被分配一个inode,且每一个文件都有一个唯一的inode编号。系统是通过inode定位每一个文件,通常情况下为了提高文件系统的执行效率,访问过的文件的inode会被缓存在内存中。那么这个连接数属性其实就是inode的引用计数。
In 命令可以创建2中文件链接-硬链接和软链接。其中软链接也叫做符号链接,只是一个普通的文件需要额外增加一个**-s**命令选项来创建。
###软连接
ln -s /bin/bash sh
上面的命令会创建一个新的软链接 sh指向 /bin/bash,此时执行ls -l可以看到:
lrwxrwxrwx 1 mirsery mirsery 9 Sep 19 10:46 sh -> /bin/bash
软连接的文件属性和目标属性完全不同,按照系统设计,软链接也要占据一个新的inode,也就是说软连接是一个新的文件,不影响inode的引用计数。
###硬连接
ln /bin/bash bash
上面的命令会创建一个名为bash的硬连接到**/bin/bash。使用ls -l**命令可以看到:
-rwxr-xr-x 2 root root 1113504 Apr 5 2018 bash
硬连接的属性和目标文件的属性完全相同,因为引用的是相同的inode,仅仅将inode的引用计数进行了**+1**操作。
软连接和硬连接的区别
- 输入删除文件连接的目标文件,则软连接会失效,而硬连接则仅是“连接数”-1。
- 软连接可以创建在任何位置,包括网络,而硬连接则不行,目标文件与连接文件必须在同一磁盘分区内。
- 软硬连接在使用的时候区别不大,都相当于是一个文件具有不同的路径和文件名。