文章目录
文件操作命令
1.显示当前工作目录
格式:
选项
pwd
-L (默认值)显示链接路径
-P 显示当前工作目录的物理位置
2.绝对路径和相对路径
- 绝对路径:以正斜杠 / 开始完整文件的位置路径
- 相对路径:不以 / 开始。一般情况下,是指相对于当前工作目录的路径。
特殊场景下,是相对于某目录的位置 可以作为一个简短的形式指定一个
文件名 - 基名:只要文件,二不取路径
- 目录名:只取路径,不要文件名
[root@Centos8 /]#basename /etc/profile.d/env.sh
env.sh
[root@Centos8 /]#dirname /etc/profile.d/env.sh
/etc/profile.d
3.更改目录
- cd命令
cd .. 切换至父目录
cd 切换至当前用户主目录
cd - 切换至上一次的工作目录
4.列出目录内容
格式:
ls [options] [files_or_dirs]
-a 包含隐藏文件
-l 显示额外的信息
-R 目录递归
-ld 目录和符号链接信息
-1 文件分行显示
-S 按从大到小排序
-t 按mtime排序
-u 配合
-t选项,显示并按atime从新到旧排序
-U 按目录存放顺序显示
-X 按文件后缀排序
-F 对不同类型文件显示时附加不同的符号:*/=>@|
-C 文件多时,以多列的方式显示文件,默认是一列(标准输出
补充:
ls 查看不同后缀文件时的颜色由 /etc/DIR_COLORS 和@LS_COLORS变量定义
ls -l 看到文件的大小,不一定是实际文件真正占用空间的大小
5.查看文件状态
每个文件有三个时间信息:
- access time 访问时间,atime,读取文件内容
- modify time 修改时间,mtime,改变文件内容(数据)
- change time 改变时间,ctime,元数据发生改变
格式:
stat [options] [parameter]
-L:支持符号连接
-f:显示文件系统状态而非文件状态
-t:以简洁方式输出信息
[root@centos ~]#stat 001
File: ‘001’
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: 802h/2050d Inode: 134327565 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-04-15 22:11:58.026521388 +0800
Modify: 2022-04-15 22:11:58.026521388 +0800
Change: 2022-04-15 22:11:58.026521388 +0800
6.确定文件内容
- 文件可以包含多种类型的数据,使用file命令检查文件的类型,然后确定适当的打开命令或应用程序使 用
格式:
file [options] <filename>...
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型 --help 显示命令在线帮助
7.文件通配符
- 文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件 通配符采有特定的符号,表示特定的含义,此特符号称为元 meta 字符
7.1常见通配符
符号 | 功能 |
---|---|
* | 匹配零个或多个字符,但不匹配 . 开头的文件,即隐藏文件 |
? | 匹配任意单个字符,一个汉字也算一个字符 |
[0-9] | 匹配数字 |
[a-z] | 表示a-z,A-Y,不包含Z |
[A-Z] | 表示从b-z,A-Z,不包含a |
[abc] | 匹配列表中的任意一个字符 |
[^abc] | 匹配列表中所有字符以外的字符 |
[:digit:] | 任意数字,相当于0-9 |
[:lower:] | 任意小写字母,表示 a-z |
[:upper:] | 任意大写字母,表示 A-Z |
[:alpha:] | 任意大小写字母 |
[:alnum:] | 任意数字或字母 |
[:blank:] | 水平空白字符 |
[:space:] | 水平或垂直空白字符 |
[:punct:] | 标点符号 |
[:print:] | 可打印字符 |
[:cntrl:] | 控制(非打印)字符 |
[:graph:] | 图形字符 |
[:xdigit:] | 十六进制字符 |
8.创建空白文件和刷新时间
格式:
touch [OPTION] ... FILE...
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
8.复制文件和目录
格式:
cp [OPTION] ... [-T] SOURCE DEST
cp [OPTION] ... SOURCE... DIRECTORY
cp [OPTION] ... -t DIRECTORY SOURCE..
-a:此参数的效果和同时指定"-dpR"参数相同
-d:当复制符号连接时,把目标文件或目录也建立为符号连接
-f:强行复制文件或目录,不论目标文件或目录是否已存在
-i:覆盖既有文件之前先询问用户
-l:对源文件建立硬连接,而非复制文件
-p:保留源文件或目录的属性
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理
-s:对源文件建立符号连接,而非复制文件
-u:使用这项参数后只会在源文件的更改时间较目标文件更新
或是名称相互对应的目标文件并不存在时,才复制文件
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀
-b:覆盖已存在的文件目标前将目标文件备份
-v:详细显示命令执行的操作
10.移动重命名文件
- mv 命令可以实现文件或目录的移动和改名
- 同一分区移动数据,速度很快:数据位置没有变化
- 不同分区移动数据,速度相对慢:数据位置发生了变化
格式
mv [OPTION] ... [-T] SOURCE DEST
mv [OPTION] ... SOURCE... DIRECTORY
mv [OPTION] ... -t DIRECTORY SOURCE...
-i 交互式
-f 强制
-b 目标存在,覆盖前先备份
- 利用rename可以批量修改文件名
格式:
rename [options] <expression> <replacement> <file>...
范例:
# 将所有txt文件加上.bak后缀
[root@centos data]#rename '.txt' '.txt.bak' *
[root@centos data]#ls
001 10.txt.bak 2.txt.bak 4.txt.bak 6.txt.bak 8.txt.bak app app-v2.0
001.txt.bak 1.txt.bak 3.txt.bak 5.txt.bak 7.txt.bak 9.txt.bak app-v1.0
# 删除.bak后缀
[root@centos data]#rename '.txt' '.txt.bak' *
[root@centos data]#ls
001 10.txt.bak 2.txt.bak 4.txt.bak 6.txt.bak 8.txt.bak app app-v2.0
001.txt.bak 1.txt.bak 3.txt.bak 5.txt.bak 7.txt.bak 9.txt.bak app-v1.0
11删除文件
- 使用rm命令可以删除文件
注意:此命令非常危险,慎重使用,建议使用 mv 代替 rm
格式:
rm [OPTION] ... FILE...
-i 交互式
-f 强制删除
-r 递归
--no-preserve-root 删除/
慎用类似命令
rm -rf /
rm -rf *
- rm 虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安 全删除文件
格式:
shred [OPTION]... FILE...
-Z 最后一次覆盖添加0,以隐藏覆盖操作
-V 能够显示操作进度
-u 覆盖后截断并删除文件
-n 指定覆盖文件内容的次数(默认值是3次)
12.目录操作
12.1显示目录树
- 很多系统默认没有安装tree命令,可以执行以下命令进行安装
yum -y install tree
格式
tree [选项] [参数]
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定wild-card pattern匹配到的路径
12.2创建目录
格式:
mkdir [选项] [参数]
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
12.3删除空目录
格式:
rmdir
-p 递归删除父空目录
-v 显示详细信息
注意:rmdir只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树