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

!! #调⽤上⼀次执⾏的命令