第九章 文件的类型和属性

2文件的类型和属性


[root@gaofeng ~]# ls -li
total 24
134317708 drwxr-xr-x. 2 root root  22 Jul 13 19:06 backup
    16346 drwxr-xr-x. 2 root root  22 Jul 13 19:06 data
134317704 -rw-r--r--. 1 root root  28 Jul 13 16:53 file.txt
134317705 -rw-r--r--. 1 root root  75 Jul 14 20:17 ip.txt
134317678 -rw-r--r--. 1 root root 798 Jul 14 19:13 passwd


第一列:	134317708			#inode号  索引节点  

第二列:	-rw-r--r--.        #文件的类型和权限 

第三列:	2					#文件的硬链接的数量 

第四列:	root				#文件的所有者   属主 

第五列:	root				#文件的所属组   属组 

第六列:	798					#文件的大小  

第七八九列	Jul 13 19:06  		#文件创建时间或最后的修改时间    

第十列:	passwd				 #文件的名称   不属于文件的属性 







#查看目录的大小  

	-s		#显示大小 
	
	-h		#以B MB GB的格式显示大小

[root@gaofeng ~]# du  -sh  /etc
31M	/etc



文件类型 

drwxr-xr-x.
-rw-r--r--.
lrwxrwxrwx
crw-rw-rw-
srw-rw-rw-
prw-------.

第一个字符为文件的类型信息

第二个到第10个	文件权限 


文件类型的种类:


	-		#普通文件    二进制  日志 文本  脚本 
	
	d		#目录 
	
	l		#软链接文件   
	
	b		#块设备   磁盘 硬盘  磁盘分区  镜像  光盘 
	
	c		#字符设备  
    
    s		#套接字文件  socket文件 
    
    p		#管道文件  
	
	
#详细显示文件的属性信息

[root@gaofeng ~]# stat  passwd 
  File: ‘passwd’
  Size: 798       	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 134317678   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-07-14 19:13:16.904691535 +0800
Modify: 2020-07-14 19:13:12.935691465 +0800
Change: 2020-07-14 19:13:12.935691465 +0800
 Birth: -

#  -c		指定格式输出    %a  以8进制显示文件的权限  

[root@gaofeng ~]# stat -c %a  passwd
644



file		#详细显示文件的信息  


[root@gaofeng ~]# file passwd 
passwd: ASCII text

[root@gaofeng ~]# file  /opt/
/opt/: directory

[root@gaofeng ~]# file  /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped

[root@gaofeng ~]# ll  /bin/ls
-rwxr-xr-x. 1 root root 117680 Oct 31  2018 /bin/ls

[root@gaofeng ~]# file  /etc/grub2.cfg 
/etc/grub2.cfg: symbolic link to `../boot/grub2/grub.cfg'

[root@gaofeng ~]# file  /dev/log
/dev/log: socket

[root@gaofeng ~]# file /run/systemd/initctl/fifo
/run/systemd/initctl/fifo: fifo (named pipe)


后缀名:

Linux中对后缀没有任何的要求,  系统存在一些带后缀名的文件,只是为了方便程序人员的使用  

Linux中是区分大小写的  


	.txt   #普通文本
	
	.log   #日志
	
	.xml   
	
	.conf
	
	.cnf
	
	.html
	
	.php
	
	.sh  #脚本 
	
	.py
	
	.mp3
	
	.jpg
	
	.png
	
	.tar    #压缩包
	
	.tar.gz #压缩包
	 
	.gz    #压缩包
	
	.zip   #压缩包
	

链接文件


文件的组成:

元数据:	metadata 	属性信息    大小 时间  属主  属组 权限  inode   索引节点   

用户数据:	user data 	数据块   硬盘存放真实数据的地方     block  


文件分为硬链接文件  hard link 和软链接文件或者符号链接   symbolic link  ==  soft link


软链接文件:

	概念:  就是相当于Windows上面的快捷方式   里面存放的是文件的路径  及可以执行这个文件 
	
	软链接文件和源文件属于不同的文件  inode是不一样 
	
[root@qls ~]# ll -i /etc/sysconfig/selinux
134477906 lrwxrwxrwx. 1 root root 17 Jul  6 02:14 /etc/sysconfig/selinux -> ../selinux/config
[root@qls ~]# ll -i /etc/selinux/config
223842 -rw-r--r--. 1 root root 543 Jul  6 02:14 /etc/selinux/config


创建软链接通过 ln命令 

选项:

	-s		#创建软链接 

ln  -s		源文件      链接文件 


[root@qls ~]# ln -s /etc/sysconfig/network-scripts/ifcfg-eth0  /root/eth0
[root@qls ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0



	
应用场景:

1. 企业的代码发布  Jenkins    秒级发布  

2. 软件版本升级 	

3. 不方便移动的目录或者文件 


[root@qls ~]# mkdir   nginx-1.17.0
[root@qls ~]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
[root@qls ~]# mkdir  nginx-1.18.0
[root@qls ~]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0

[root@qls ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.18.0
[root@qls ~]# ln  -s nginx-1.17.0/    nginx
[root@qls ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
lrwxrwxrwx. 1 root root 13 Jul 15 20:04 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.18.0
[root@qls ~]# rm -f  nginx  &&  ln -s  nginx-1.18.0/  nginx		#版本升级
[root@qls ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
lrwxrwxrwx. 1 root root 13 Jul 15 20:04 nginx -> nginx-1.18.0/
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.18.0


[root@qls ~]# rm -f nginx  &&  ln -s  nginx-1.17.0/  nginx		#版本回退  
[root@qls ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
lrwxrwxrwx. 1 root root 13 Jul 15 20:07 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.18.0




&&		#前面的命令执行成功  才会执行后面的命令 


||		#前面的命令执行失败,才会执行后面的命令 



软链接的特点:

概念

创建 

跟源文件是不同类型的文件,inode是不一样的

软链接可以对目录创建 也可以跨文件系统 

rm  -f

删除软链接文件对源文件没有任何影响 

删除源文件,软链接存在,但是会失效   出现 红底白字闪烁状  



硬链接

概念:	多个文件的数据指向同一个数据块,多个不同的入口,inode是相同的,这样的文件互为硬链接 

防止文件被误删除  

创建 

	ln命令直接创建   只能对文件创建  不能对目录创建  
	
	ln   源文件    硬链接文件 
	
	

[root@qls ~]# cp  /etc/hosts   ./
[root@qls ~]# ll
total 4
lrwxrwxrwx. 1 root root  41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-r--r--. 1 root root 158 Jul 15 20:18 hosts
lrwxrwxrwx. 1 root root  13 Jul 15 20:07 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root   6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root   6 Jul 15 19:59 nginx-1.18.0
[root@qls ~]# ln  hosts    hosts_hard
[root@qls ~]# ll
total 8
lrwxrwxrwx. 1 root root  41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-r--r--. 2 root root 158 Jul 15 20:18 hosts
-rw-r--r--. 2 root root 158 Jul 15 20:18 hosts_hard
lrwxrwxrwx. 1 root root  13 Jul 15 20:07 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root   6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root   6 Jul 15 19:59 nginx-1.18.0
[root@qls ~]# ll -i 
total 8
134317677 lrwxrwxrwx. 1 root root  41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
134317704 -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts
134317704 -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts_hard


[root@qls ~]# cat hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@qls ~]# cat hosts_hard 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@qls ~]# echo "123" >>hosts_hard
[root@qls ~]# cat hosts_hard 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
123
[root@qls ~]# cat hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
123


删除源文件或者硬链接文件都没有什么影响    只有硬链接为0时,这个文件才会被真正的删除 



企业面试题:软链接和硬链接的区别? 

1. 从概念    
#软链接文件和源文件属于不同的文件  inode是不一样 

#	多个文件的数据指向同一个数据块,多个不同的入口,inode是相同的,这样的文件互为硬链接 


2. 从创建方式   
# 软链接可以对目录创建 也可以跨文件系统
#ln命令直接创建   只能对文件创建  不能对目录创建
3. 从创建对象  #

4. 从删除     #删除源文件,软链接存在,但是会失效   出现 红底白字闪烁状
 
 
 #删除源文件或者硬链接文件都没有什么影响    只有硬链接为0时,这个文件才会被真正的删除 

命令的执行过程


1. 系统会判断你输入的命令是否绝对路径,是直接执行

2. 如果是相对路径,系统会判断命令是否存在别名,如果存在,执行别名 

3. 如果命令不存在别名,系统会判断输入的命令是否内置命令,如果是,直接执行 

4. 如果不是内置命令,系统会查询内存的hash缓存表,如果命令存在缓存,则按照缓存执行 

5. 如果hash缓存表中没有命令的缓存,系统会从环境变量PATH中的命令路径查询命令的路径进行执行

6. 如果PATH变量没有命令的路径,就会报错  command  not  found  

 1判断是否是绝对路径 
 2判断是否是存在别名 
 3判断是否是内置命令
 4判断师傅是hash缓存表发命令 
 5不是缓存表的命令会在系统环境变量(PATH)中查找
 6如果 环境变量中没有 就会报错




#查询命令是否为内置命令 

[root@gaofeng ~]# type  -a  cd
cd is a shell builtin
cd is /usr/bin/cd
[root@gaofeng ~]# type  -a  ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls

#查看系统中所有的内置命令

[root@gaofeng ~]# help


#查看当前窗口下所有外部命令的缓存表

[root@gaofeng ~]# hash
hits	command
  53	/usr/bin/grep
   1	/usr/bin/egrep
   1	/usr/bin/tail
   6	/usr/bin/file




[root@gaofeng ~]# /usr/bin/wc   /etc/hosts
  2  10 158 /etc/hosts
[root@gaofeng ~]# ll   /usr/bin/wc
-rwxr-xr-x. 1 root root 41688 Oct 31  2018 /usr/bin/wc
[root@gaofeng ~]# mv /usr/bin/wc  /usr/bin/gl
[root@gaofeng ~]# wc  /etc/hosts
-bash: /usr/bin/wc: No such file or directory
[root@gaofeng ~]# gl  /etc/hosts
  2  10 158 /etc/hosts
[root@gaofeng ~]# hash 
hits	command
  53	/usr/bin/grep
   1	/usr/bin/egrep
   1	/usr/bin/tail
   1	/usr/bin/gl


#从缓存中删除一个命令的缓存

[root@gaofeng ~]# hash  -d  wc


[root@gaofeng ~]# wc  /etc/hosts
-bash: wc: command not found


[root@gaofeng ~]# mv  /usr/bin/gl  /usr/bin/wc
[root@gaofeng ~]# wc  /etc/hosts
  2  10 158 /etc/hosts


[root@gaofeng ~] mv /usr/bin/wc  /usr/sbin/
[root@gaofeng ~]# wc  /etc/hosts
-bash: /usr/bin/wc: No such file or directory
[root@gaofeng ~]# hash  -d  wc
[root@gaofeng ~]# wc  /etc/hosts
  2  10 158 /etc/hosts


#清空hash缓存表中的所有缓存 

[root@gaofeng ~]# hash  -r
[root@gaofeng ~]# hash
hash: hash table empty

#里面存放的是系统中的命令的路径,每个路径用:号分割 

[root@gaofeng ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


posted @ 2022-09-09 14:45  高压锅炖主播  阅读(47)  评论(0)    收藏  举报