文件管理
1 文件结构 P15
linux的哲学思想就是一切皆文件,linux的文件系统就是一个倒状的树形结构,一切都以/(根目录)开始,
- /bin:谁都可二进制可执行程序
- /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
- /dev:设备文件及特殊文件存储位置
- /etc:配置文件目录,类似于注册表,大部分是文本文件
- /etc/motd 开机提示词(开机之后)
- /etc/issue 开机提示词(开机之前)
- /home:普通用户家目录
- /root:管理员的家目录
- /run:内存中动态生成的信息,系统运行中某些程序生成的信息
- /sbin:管理员二进制可执行程序
- /tmp:临时文件存储位置
- /usr : 独立的用户根目录,类似于Windows文件
- /var :变化的文件,如日志,用户生成的网页,邮件之类的
应用程序的组成部分
- 二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
- 库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
- 配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
- 帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc
1.1 文件类型
Linux中文件大致分为7类
- - 普通文件
- d 目录文件
- b 块设备 随机访问P32
- c 字符设备 顺序访问
- l 符号链接文件
- p 管道文件 先进先出,同一时间单向
- s 套接字文件 双向传输
2 文件命令
2.1 路径 pwd
路径分为相对路径和绝对路径
- 绝对路径以/开头,显示文件的完整路径
- 相对路径不易/开头,显示文件相对于当前目录或者某目录对的位置
- 基名:basename,只取文件名而不要路径
- 目录名:dirname,只取路径,不要文件名
pwd 显示当前的绝对路径
[root@centos8 ~]# pwd
/root
- -p 显示真实的文件路径
2.2 更改目录cd
cd :改变目录
- 切换父目录:cd…
- 切换到当前用户的家目录:cd cd ~
- 切换以前工作目录:cd -
2.3 目录内容 ls
ls 可以列出当前目录或指定目录的文件
- -a 包含隐藏文件的所有文件
- -i 显示inode
- -d 只显示文件夹本身,不进入文件夹
- -l 显示额外的信息
- -R 目录递归
- -1 文件分行显示
- -S 从大到小
2.4 文件状态 stat
每个文件有三个时间戳
- 访问时间: atime 读取文件内容
- 修改时间: mtime 修改文件内容
- 改变时间: ctime 改变元数据
2.5 文件类型 file
file 可以查看文件的类型
[root@centos8 /]# file /etc/passwd
/etc/passwd: ASCII text
- -b 列出文件辨识结果时,不显示文件名称
- -L 查看对应软链接对应文件的文件类型
2.6 通配符
- 文件通配符可以用来匹配符合条件的多个文件,方便批理管理文件
- * 匹配零个或多个字符
- ? 匹配任何单个字符
- [0-9] 匹配数字范围
- [a-z] 字母 (a A b B…y Y z)
- [A-Z] 字母 (A b B…y Y z Z)
- [wang] 匹配列表中的任何的一个字符
- [^wang] 匹配列表中的所有字符以外的字符
预定义字符:在使用预定义字符是主要要加中空号
例:[[:digit:]]
- [:digit:] 任意数字,相当于0-9
- [:lower:] 任意小写字母,表示 a-z
- [:upper:] 任意大写字母,表示 A-Z
- [:alpha:] 任意大小写字母
- [:alnum:] 任意数字或字母
- [:blank:] 水平空白字符
- [:space:] 水平或垂直空白字符
- [:punct:] 标点符号
- [:print:] 可打印字符
- [:cntrl:] 控制(非打印)字符
- [:graph:] 图形字符
- [:xdigit:] 十六进制字符
2.7 创建和复制文件
2.7.1 创建文件touch
在linux中可以使用touch创建空文件
- -a 仅改变 atime和ctime
- -m 仅改变 mtime和ctime
- -t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
- -c 如果文件不存在,则不予创建
2.7.2 复制cp
cp命令主要实现文件的复制。格式
cp 目标文件 目的地
cp -t 目的地 目标文件
选项:
- -i 覆盖前提示
- -n 不覆盖,主要顺序
- -r -R 递归
- -a 归档
- -p 保留权限
- -b 目标存在,覆盖前先备份,形式为 filename~
2.8 移动重命名和修改删除
2.8.1 移动重命名mv
mv 可以将文件移动到指定地址,并且重命名
mv 目标文件 目的地(可以修改文件名)
- -f 强制
- -b 覆盖前先备份
2.8.2 修改rename
rename 可以批量修改文件名
rename 要修改的内容 修改成的内容 修改的文件
2.8.3 删除 rm
rm 删除文件
- -i 交互式
- -f 强制
- -r 递归
注意:rm -rf /* (/)
2.9 目录操作
2.9.1 显示目录树 tree
tree 显示目录树
[root@centos8 ~]# tree
.
├── anaconda-ks.cfg
├── Desktop
├── Documents
├── Downloads
├── initial-setup-ks.cfg
├── Music
├── Pictures
├── Public
├── Templates
├── tr
└── Videos
- -d: 只显示目录
- -L level:指定显示的层级数目
- -P pattern: 通配符
2.9.2 创建目录 mkdir
mkdir 创建空目录
- -p: 存在于不报错,且可自动创建所需的各目录
- -v: 显示详细信息
- -m MODE: 创建目录时直接指定权限
[root@centos8 data]# mkdir -p testdir/dir1/{x,y}/{a,b}
[root@centos8 data]# tree
.
└── testdir
└── dir1
├── x
│ ├── a
│ └── b
└── y
├── a
└── b
2.9.3 删除目录 rmdir
rmdir 删除空目录
- -p 递归删除父空目录
- -v 显示详细信息
注意:rmdir只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树
3 链接
3.1 硬链接
ln 可以创建硬链接
ln 源文件 链接文件
硬链接实际上是同一文件的不同命名,inode号一样,注意:
- 删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文件被删除
- 不能跨越驱动器或分区
- 不支持对目录创建硬链接
3.2 软链接
ln -s 可以创建软连接
ln -s 源文件 链接文件
软连接本质上和源文件不是同一文件,inode号不同,相当于创建快捷方式,注意:
- 可以对目录创建软链接
- 可以跨分区的文件实现
- 软链接如果使用相对路径,是相对于原文件的路径,而非相对于当前目录
3.3 链接区别
- 本质:
硬链接:本质是同一个文件
软链接:本质不是同一个文件 - 跨设备
硬链接:不支持
软链接:支持 - inode
硬链接:相同
软链接:不同 - 链接数
硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少
软链接:创建或删除,链接数不会变化 - 文件夹
硬链接:不支持
软链接:支持 - 相对路径
硬链接:原始文件相对路径是相对于当前工作目录
软链接:原始文件相对路径是相对于链接文件的相对路径 - 删除源文件
硬链接:只是链接数减一,但链接文件的访问不受影响
软链接:链接文件将无法访问 - 文件类型
硬链接:和源文件相同
软链接:链接文件,和源文件无