本章涉及Linux命令:
tree、cd、pwd、ln、 | 、
1、tree 查看目录子结构
[root@szb data]# tree git
git
`-- shell
|-- f1.txt
|-- f2.txt
|-- f3.txt
`-- README.md
1 directory, 4 files
参数:
-L 1 :只显示一层目录
-p 列出权限标示
-f 显示完整的相对路径名称
2、Linux根目录结构
目录名称 | 作用 |
---|---|
/boot | 系统启动文件,内核以及引导加载器 |
/bin | 存放所有目录的基本命令,不能独立分区 |
/sbin | 存放管理类的基本命令,不能独立分区 |
/lib | 存放程序依赖的基本共享库文件以及内核模块文件 |
/etc | 配置文件目录 |
/home | 普通用户家目录 |
/root | 管理员用户家目录 |
/media | 便携式移动挂载点 |
/mnt | 临时文件系统挂载点 |
/dev | 设备文件及特殊文件存储位置 |
/opt | 第三方程序安装位置 |
/srv | 系统上运行的服务用到的数据 |
/tmp | 临时文件存储位置 |
3、文件层次结果标准:
文件层次标准参考地址
4、文件的路径(绝对路径和相对路径)
pwd # 显示当前所在目录
cd # 切换到目标目录
cd / cd . # 切换到当前目录
cd .. # 切换到上一级目录
cd - # 切换到上一次所在目录
[root@szb ~]# cd -
/etc
[root@szb etc]# echo $OLDPWD # 保存切换前的当前所在路径
/root
5、文件类型
文件分类:
- 普通文件
d 目录文件
l 链接文件
p 管道文件
c 字符设备文件 /dev/{zero,null,tty*}
b 块设备文件 /dev/
s 套接字文件(socket)数据接口文件,全双工方式, ls /run/*.sock
普通文件 -
根据内容不同,可分为:
1)纯文本文件
可cat查看的文件内容,全部都是可读的数据
/etc/fstab,/etc/issue
2)二进制可执行文件
cat本身就是一个二进制可执行文件,内容为不可直接读懂的内容
3)数据格式文件
eg:图片,压缩,日志文件,不可以用文本查看根据读取内容,用last
[root@szb etc]# last /var/log/wtmp # 系统的登录信息记录
wtmp begins Tue Apr 12 22:48:06 2022
链接文件:l
软连接(Symbolic Link):ln -s
硬连接(Hard Link)
管道文件
伪文件(实际是内核缓冲区),为了实现进程件通讯IPC(InterProcess Communication)
FIFO--先进先出
局限性:
自己写的数据不能自己读取;不可反复读取;半双工通信方式,同一时间数据只能在一个方向流动
[root@szb etc]# ll /run
total 56
prw------- 1 root root 0 Jun 16 17:33 dmeventd-client
常见通信方式:
单工:只能一个方向传输信息:传统收音机
半双工:可以双向传输信息,但是不能同时进行传输:对讲机
全双工:可以同时双向传输信息:手机
6、创建、删除目录:
mkdir 目录名称
-p 递归创建目录
-m mode 创建文件的模式(权限)
-v 创建目录时给出详细说明
删除目录
rmdir -pv 用于删除空目录
dirname -- 去除文件名中的**非目录部分**
basename -- 显示文件路径名的基本文件名
7、ls命令
-a 显示隐藏文件
-d 仅显示目录名
-l 长格式显示
-R 递归处理
-F文件类型标识符:*可执行权限的普通文件;/目录;@符号链接;|命令管道;-表示sockets套接字
8、文件的时间属性
文件分为两部分:
文件的数据部分:
即存放在数据空间(data block);
文件的属性信息:
文件的元数据,存放在节点空间(inode block)
文件的时间属性:atime 、ctime、 mtime
mtime:记录最后一次文件数据部分的修改时间
atime: 记录最后一次访问的时间
ctime:记录最后一次文件元数据修改的时间
mtime的修改一定引起ctime的改变,至少已经修改了inode记录上的mtime
示例:
[root@szb etc]# ls -l --time=atime /data/
注意:atime更新条件:防止频繁写操作,优化性能,开启的relatime挂载选项
1)文件的atime时间超过一天以上
2)文件的mtime比atime更晚
9、查看文件属性信息
1)file --辨识文件类型
-i 输出文件对应的MIME类型(类似:text/plain)
-L 直接显示符号连接所指向的文件类别
-b 不显示文件名称
[root@szb data]# file -i f2
f2: text/plain; charset=us-ascii
2)stat --显示文件的详细属性
[root@szb data]# stat f2 # 示例
File: ‘f2’
Size: 1321 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 394748 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-05-17 02:19:10.908404620 +0800
Modify: 2022-05-17 02:19:10.908404620 +0800
Change: 2022-05-17 02:19:10.908404620 +0800
Birth: -
10、文件的创建、复制、移动/重命名、删除
touch、cp、mv 、rename、rm
1)touch 文件名 --设置文件的修改和访问时间,不存在即默认权限创建文件
参数:
-a 只更改atime访问时间/-m 只更改mtime时间
-c 不新建任何文件
2)cp --复制文件
-b 覆盖已存在的文件并对之备份
-l 对源文件建立硬链接
-p 保留源文件或目录的属性
-P 复制软链接本身,而不是软链接指向的源文件
-r 对目录复制需要添加此选项
3)mv --移动及重命名文件
-b 当文件存在时,覆盖前进行备份
重命名:rename
用法:rename expression relpacement file
eg:rename .conf .conf.bak *.conf # 将所有的.conf结尾的文件,批量修改名.conf.bak
4)rm --删除文件
参数:
-f 强制删除文件
-d 删除空目录文件
-r,-R 递归删除,一般用于删目录
eg:rm -- -f1 # 使用--删除-开头的文件
复制过程中的一些问题:
源文件 | 目标文件不存在 | 目标存在且为文件 | 目标存在且为目录 |
---|---|---|---|
一个文件 | 会创建dest文件,在将src内容复制到dest中 | 文件内容会覆盖,原来dest内容会丢失 | 在该目录下创建同名文件,并src将内容复制到对应的dest中 |
多个文件 | 提示错误 | 提示错误 | 在该目录下创建同名文件,并src将内容复制到对应的dest中 |
目录文件 | 创建指定DEST同名目录,复制src目录中所有文件至DEST下 | 提示错误 | 在dest下创建与原目录同名目录,并将src中的内容复制新的目录中 |
11、软链接与硬链接–ln
元数据中的inode是个整数,区分每个文件的唯一标识
查看inode:ls -i 或者stat
链接实现了Linux系统文件的共享
命令:ln
-s 软链接
-b覆盖前先备份
1)硬链接
用法:ln 源文件 目标文件
注意: 目标文件存在会报错;创建的inode不会变
特性:
1.具体相同的inode和data block,只能对已存在的文件进行创建;
2.不能跨分区创建,只可对文件创建,删除一个硬链接文件不会影响其他相同的inode号的文件
说明:当前目录会有当前目录.和..父目录,这两个就是两个硬链接,创建目录的话会产生目录环
2) 软件链接(用户数据块存放的是另外一个文件的路径名指向)
特性:
1.有自己的inode号与用户数据块
2.有自己的文件属性及权限;可对不存在的文件和目录创建软连接;可跨分区创建;
3.可对文件目录创建;链接计数不会增加;
4.删除软链接不影响,但是删除原文件,相关软链接为死链接,若指向路径的文件重新创建,则恢复正常软链接