文件的属性和类别
1、文件属性
- 表示文件类型
rw-r--r-- 表示权限
1 这个文件被链接次数
root (第一个) 文件的拥有着(用户)
root (第二个) 文件的拥有组(用户组相当于家族)
672 文件的大小
Jul 30 17:33 创建的时间
1.txt 文件名称
2、文件类型
- 表示文件(普通文件、图片、压缩包)
s(socket) 表示本地进程与进程之间的一种通信方式(mysql)
b(block) 表示块文件,为装置文件里面的可供储存的接口设备(硬盘、光盘、分区)
c 表示字符设备,用于提供用户的输入与输出
l 表示链接文件,类似Windows的快捷方式
d 表示目录,类似Windows的文件夹
因为Linux不区分后缀, 后缀通常都是用方便我们自己好识别
(1)对于一些文件无法精准的区分类型, 可以使用file命令查看
[root@oldboy ~]# file /etc/grub2.cfg
/etc/grub2.cfg: symbolic link to `../boot/grub2/grub.cfg'
(2)使用file能精准查看出文件是什么类型
[root@oldboy ~]# file /etc/hosts /tmp /bin/ls /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log
/etc/hosts: ASCII text
/tmp: sticky directory
/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
/dev/sda: block special
/dev/tty1: character special
/etc/grub2.cfg: symbolic link to `../boot/grub2/grub.cfg'
/dev/log: socket
3、链接文件
(1)软链接ln -s(类似于Windows的快捷方式)
查看目录中的软链接:ll -ah 查看文件的ID:ll -ia
ln -s 源文件 要链接的位置
软链接适用的场景(很少对文件做软连接):
1.软件升级 软件回退
2.代码升级 秒级回退
3.不方便移动的目录
[root@oldboy /opt]# mkdir wa_v1.1
[root@oldboy /opt]# ln -s /opt/wa_v1.1/ /root/wa ln -s 源文件 要链接的位置
[root@oldboy /opt]# ll -ah /root/
①软件升级 软件回退
rm -f /root/wa && ln -s /opt/wa_v2.1/ /root/wa 先删除文件再创建软链接
软件升级
[root@oldboy /opt]# mkdir wa_v2.1
[root@oldboy /opt]# rm -f /root/wa && ln -s /opt/wa_v2.1/ /root/wa
软件回退
[root@oldboy /opt]# rm -f /root/wa && ln -s /opt/wa_v1.1/ /root/wa
[root@oldboy /opt]# ll -ah /root/
②代码升级 秒级回退
跟软件升级回退一样,只不过软件的是目录,代码的是文件
③不方便移动的目录
适用于大文件和重要文件
(2)硬链接 ln /root/file /root/file_hard
软链接与硬链接的区别?
1.软链接相当于一个快捷方式,删除软连接不会影响源文件。
2.硬链接相当于一个文件副本,删除硬链接不影响源文件,只有删除所有的硬链接及其源文件,这个文件才算彻底被删除。
3.硬链接就是一个副本,多个硬链接都是相同的inode节点,软链接时一个链接一个节点
①创建一个硬链接(必须是文件)
[root@oldboy /opt]#touch ze_hard
[root@oldboy /opt]# ln /opt/ze_hard /root/ze
用ll -i查看硬链接的ID和源文件的ID是否一致
[root@oldboy /opt]# ll -i
total 0
67180780 drwxr-xr-x. 2 root root 6 Jul 31 16:41 wa_v1.1
101394991 drwxr-xr-x. 2 root root 21 Jul 31 16:45 wa_v2.1
34396875 -rw-r--r--. 1 root root 0 Jul 31 17:10 ze_hard
[root@oldboy /opt]# ll -i /root/
total 59312
67180779 -rw-r--r--. 1 root root 672 Jul 30 17:33 1.txt
67180800 -rw-r--r--. 1 root root 58112885 Jul 30 17:52 access.log
67147842 -rw-------. 1 root root 1699 Jul 24 16:32 anaconda-ks.cfg
67180793 lrwxrwxrwx. 1 root root 13 Jul 31 16:45 wa -> /opt/wa_v1.1/
67147855 -rw-r--r--. 1 root root 212 Jul 30 12:24 web.log
34396875 -rw-r--r--. 2 root root 0 Jul 31 17:10 ze
②删除硬链接 (删除了源文件,硬链接还是能用)
[root@oldboy /opt]# rm -f /opt/ze_hard
[root@oldboy /opt]# ll -i /root/
67180793 lrwxrwxrwx. 1 root root 13 Jul 31 16:45 wa -> /opt/wa_v1.1/
67147855 -rw-r--r--. 1 root root 212 Jul 30 12:24 web.log
34396875 -rw-r--r--. 1 root root 0 Jul 31 17:10 ze
- 硬链接与软链接区别
1)ln命令创建硬链接,ln -s命令创建软链接。
2)目录不能创建硬链接,并且硬链接不可以跨越分区系统。
3)目录软链接特别常用,并且软链接支持跨越分区系统。
4)硬链接文件与源文件的inode相同,软链接文件与源文件inode不同。
5)删除软链接文件,对源文件及硬链接文件无任何影响。
6)删除文件的硬链接文件,对源文件及链接文件无任何影响。
7)删除链接文件的源文件,对硬链接无影响,会导致软链接失效。
8)删除源文件及其硬链接文件,整个文件会被真正的删除。
4、命令执行流程[扩展了解]
(1) 判断命令是否通过绝对路径执行
(2) 判断命令是否存在alias别名
(3) 判断用户输入的是内置命令还是外置命令
(4) Bash内部命令直接执行,外部命令检测是否存在缓存
(5) 通过$PATH变量查找命令,有执行,无报错 command not found
绝对路径-->alias--->hash缓存-->$PATH变量路径--->有执行--->没有 command not found