Linux文件属性
-rw-r--r--. 1 root root 672 Jul 30 15:23 file.txt
第一列第一个字符 表示文件类型
rw-r--r-- 文件权限
root 第三列 文件拥有者(用户)
root 第四列 文件的拥有组(用户组)
672 第五列 文件大小
Jul 30 15:23 文件创建时间
file.txt 文件名
- 普通文件(图片 压缩包)
d 目录文件(硬盘 光驱 分区)
l 链接文件 快捷方式
s socket 本地进程于进程间的一种通信方式 (mysql)
b block 块设备(磁盘\分区光盘)
c 字符设备 用于提供用户的输入和输出
第二种方式:当无法通过ls -l的属性识别该文件是什么类型时,可以通过file进行查看
file 确定文件类型
[root@centos ~]# file access.log
access.log: ASCII text, with very long lines
我们会将文件表示对应的后缀.让我们好识别
Linux不区分后缀,后缀只是为了让我们好识别
系统连接文件
Linux上分成2个部分:
用户数据即文件数据块,数据块时记录文件真实内容的地方,我们将其称为Block
元数据即文件的附加属性,如文件大小,创建时间,所以者等信息。我们称其为Inode
Linux系统引入两种链接
硬链接 ln 创建硬链接
硬链接则是拥有相同的inode id .只有删除文件后,才会失效.
目录不能创建硬链接
不支持跨分区,
软链接 ln -s 创建软链接
其实就是通过inode指向block
文件很少创建软链接
要用绝对路径
软链接类似于快捷方式,inode id 不同,删除原文件,则软链接失效
[root@centos ~]# ln -s file.txt /root/kj.txt
[root@centos ~]# rm -f /root/kj.txt && ln -s /root/file1.txt /root/kj.txt
先执行删除,然后执行ln操作,&&(暗的符)前面的命令执行成功,则立即执行&&后面的命令
1.软件升级
[root@centos ~]# rm -fr qq && ln -s /root/qq_v1.1 /root/qq 删除qq目录并且创建一个qq_v1.1的一个qq软链接
[root@centos ~]# ll
total 0
lrwxrwxrwx. 1 root root 13 Jul 31 11:41 qq -> /root/qq_v1.1
drwxr-xr-x. 2 root root 6 Jul 31 11:29 qq_v1.1
drwxr-xr-x. 2 root root 6 Jul 31 11:29 qq_v1.2
2.企业代码发布
3.不方便目录移动
区别
1,ln命令创建硬链接,ln -s 命令创建软链接
2,目录不能创建硬链接,并且硬链接不可以跨越分区系统
3,目录软链接特别常用,并且软链接支持跨分区系统
4,硬链接文件于源文件的inode相同,软链接文件于源文件ionde不同
5,删除软链接文件,对源文件及硬链接文件无任何影响
6,删除文件的硬链接,对源文件及链接文件无任何影响
7,删除链接文件的源文件,对硬链接无影响,会导致软链接失效
8,删除源文件及其硬链接文件,整个文件会被真正的删除
总结:
1.符号链接就是软链接,类似于快捷方式,inode id 不同,删除源文件,则软链接失效
2.硬链接则是拥有相同inode id 的文件,只有删除所有文件后,才会失效
Linux命令执行流程
1,命令是否通过绝对路径执行
2,命令是否存在alias别名
3,用户输入的是shell内置命令还是外置命令 type -e
4,bash内部命令直接执行,外部命令检测是否存在缓存
5,查找系统全局$PATH变量,变量中保存的全部都是命令存放的路径,有执行,无报错command not found
什么是内部命令,什么是外部命令
内部命令:shell程序自带的命令
外部命令:在系统PATH变量的莫格路径下可执行程序
如何检查用户输入的命令是内部命令还是外部命令
[root@centos ~]# type -a cd
cd is a shell builtin #shell程序自带的命令 内置命令
cd is /usr/bin/cd
ping属于外部命令,同时会打印当前命令路径
[root@centos ~]# type -a ping
ping is /usr/bin/ping
如果时外置命令,Bash可以通过查找PATH变量,获取该命令的绝对路径
[root@centos ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
hash -r 清除命令执行路径缓存