linux文件属性和类型
- 格式:pdf
- 大小:137.84 KB
- 文档页数:3
linux⽂件属性和类型
Linux⽂件属性和类型
1.linux⽂件属性
第⼀种查看⽅式
[root@beua ~]# ls -l ks.cfg
-rw-------. 1 root root 4434 May 30 13:58 ks.cfg
-rw-------. ①:第⼀个字符是⽂件类型,其他则是权限
1 ②:硬链接次数
root ③:⽂件属于哪个⽤户
root ④:⽂件属于哪个组
4434 ⑤:⽂件⼤⼩
May30 13:58 ⑥⑦⑧:最新修改的时间与⽇期
ks.cfg ⑨:⽂件或⽬录名称
2.linux⽂件类型
-rwxr-xr-x. 1 root root 117680 Oct 31 03:16 /bin/ls
srw-rw-rw-. 1 root root 0 Apr 3 16:57 /dev/log
brw-rw----. 1 root disk 8, 0 Apr 3 16:57 /dev/sda
crw--w----. 1 root tty 4, 1 Apr 3 16:57 /dev/tty1
lrwxrwxrwx. 1 root root 22 Mar 28 03:33 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 Apr 1 18:09 /etc/hosts
prw-------. 1 root root 0 Apr 3 16:57 /run/dmeventd-client
drwxrwxrwt. 22 root root 4096 Apr 3 20:57 /tmp
#最前⾯那个字母含义:
- 通常指的是⽂件 s socket⽂件(mysql) b block 块设备(磁盘\分区光盘) c 字符设备 l 链接⽂件(呈现浅蓝⾊) p 管道⽂件 d ⽬录⽂件(呈现蓝⾊状
态)
第⼆种查看⽅式:
当⽆法通过ls -l的属性识别该⽂件是什么类型时,可以通过file进⾏查看
我们会将⽂件标注对应的后缀. .txt .sh .mp3 .mp4 .exe .zip Linux的⽂件加上后缀能够便于我们快速的识别.这个⽂件是什么类型.
3.linux系统链接⽂件
#软链接使⽤场景 1.软件升级 2.企业代码发布 3.不⽅便⽬录移动
#先执⾏删除,然后执⾏ln操作, && (&&前⾯的命令执⾏成功,则⽴即执⾏&&后⾯的命令)
[root@beua ~]# rm -f /root/qq && ln -s /root/qq_v1.2/ /root/qq #版本升级
[root@beua ~]# rm -f /root/qq && ln -s /root/qq_v1.1/ /root/qq
4.硬链接与软链接区别
1)ln命令创建硬链接,ln -s命令创建软链接。
2)⽬录不能创建硬链接,并且硬链接不可以跨越分区系统。
3)⽬录软链接特别常⽤, 并且软链接⽀持跨越分区系统。
4)硬链接⽂件与源⽂件的inode相同,软链接⽂件与源⽂件inode不同。
5)删除软链接⽂件,对源⽂件及硬链接⽂件⽆任何影响。
6)删除⽂件的硬链接⽂件,对源⽂件及链接⽂件⽆任何影响。
7)删除链接⽂件的源⽂件,对硬链接⽆影响,会导致软链接失效。
8)删除源⽂件及其硬链接⽂件,整个⽂件会被真正的删除。
总结: 软链接就是快捷⽅式,不同的inode同时指向同⼀个block,删除软链接,源⽂件没有任何影响,删除源⽂件则软链接失效.
硬链接是多个相同的inode指向同⼀个block,其实就是⽤于给⽂件做备份.(只有删除所有⽂件,硬链接才会失效)
*当前的磁盘空间还剩余500GB,但就是⽆法往⾥⾯写⼊数据.
No space left on device 要不是真的没有磁盘空间(),要么就是inode被占满5.linux命令执⾏流程(扩展)
⑴ping 探测对端主机是否存活
1) 命令是否通过绝对路径执⾏
2) 命令是否存在alias别名
3) ⽤户输⼊的是shell内置命令还是外置命令 type -a
4) Bash内部命令直接执⾏,外部命令检测是否存在缓存
5) 查找系统全局$PATH,变量中保存的全部都是命令存放的路径,有执⾏,⽆报错command not found
⑵什么是内部命令,什么是外部命令
内部命令: shell程序⾃带的命令。 外部命令: 在系统PATH变量的某个路径下的可执⾏程序。
⑶如何检查⽤户输⼊的命令是内部命令还是外部命令
cd命令属于shell内部命令
type -a cd
cd is a shell builtin
cd is /usr/bin/cd
#ping属于外部命令, 同时会打印当前命令路径
type -a ping
ping is /bin/ping
⑷如果是外置命令,Bash可以通过查找PATH变量,获取该命令的绝对路径。
打印当前环境变量⽬录:
[root@beua ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PS: PATH由多个路径组成,每个路径值之间⽤冒号间隔,对这些路径的增加和删除操作都将影响到Bash解释器对Linux命令的查找
⑸如果是外置命令还会涉及到⼀个内存缓存,也就是说,当我们出现重复执⾏相同的命令,会通过缓存调取执⾏,也就意味着不会搜索PATH路径。
表缓存命令所在位置
[root@beuai ~]# hash
hits command
1 /usr/bin/tty
3 /sbin/ifconfig
已缓存命令,如果移动位置会导致⽆法找到该命令
[root@beua ~]# mv /sbin/ifconfig /bin/
[root@beua ~]# ifconfig
-bash: /sbin/ifconfig: No such file or directory
删除缓存过的ifconfig命令, 即可执⾏
[root@beua ~]# hash -d ifconfig
[root@beua ~]# ifconfig
#当然可以清空缓存表
[root@beua ~]# hash -r
#注意: 命令缓存hash需要注意如下情况:
1.只要执⾏外部命令1次就会对该命令进⾏缓存
2.如果将命令移动了位置,该如何执⾏
a.使⽤绝对路径执⾏
b.删除hash表的缓存指令总结: 命令执⾏的流程
1) 检查执⾏的命令是否使⽤的是绝对路径执⾏的。
2) 检查ping命令是否存在alias别名
3) 检查ping命令是内部命令还是外部命令
4) 如果是内部命令Bash直接执⾏,如果是外部命令,⾸先检查Hash缓存,存在则直接调取
5) 如果该命令不存在Hash缓存,则通过PATH路径进⾏逐⾏查找该命令所在的位置
6) 如果PATH路径没有查找到该命令所在的路径,则返回错误码。command not found
6.符号: 通配符
. #代表当前⽬录,但⽂件名以点开头则代表隐藏⽂件 如果在grep时,使⽤.代表匹配任意的单个字符
.. #代表上⼀级⽬录, 上级⽬录的inode和..的inode是⼀致(硬链接) /usr/local cd ..
~ #回到当前⽤户的家⽬录
* #所有
\ #转义字符
# #命令⾏是不执⾏命令,但会保留在history中,⽂件中有#代表不执⾏
$() #⼩括号中必须是命令,与其类似的还有 ``
> #标准重定向,会覆盖⽂件的内容
^ #在匹配字符的时候,以什么开头
$ #在匹配字符的时候,以什么结尾
| #将左边命令的输出,交给右边命令的输⼊
|| #前者命令执⾏不成功,后者命令执⾏
&& #前者命令执⾏成功,后者命令则执⾏
! #调⽤历史history中的命令 !Number !string
!! #调⽤上⼀次执⾏的命令