一、文件操作
1.查看当前工作目录
每个
shell
和系统进程都有一个当前的工作目录
CWD
:
current work directory
显示当前
shell CWD
的绝对路径
pwd
命令
: printing working directory
- -P 显示真实物理路径
- -L 显示链接路径(默认)
2.绝对和相对路径
- 绝对路径
以正斜杠/
即根目录开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
- 相对路径
不以斜线开始
一般情况下,是指相对于当前工作目录的路径,特殊场景下,是相对于某目录的位置
可以作为一个简短的形式指定一个文件名
基名:
basename
,只取文件名而不要路径
目录名:
dirname
,只取路径,不要文件名
3.更改目录
命令
cd
:
change directory
改变目录
选项:
-P
切换至物理路径,而非软链接目录
可以使用绝对或相对路径
- 切换至父目录: cd ..
- 切换至当前用户主目录: cd
- 切换至以前的工作目录: cd -
4.列出目录的内容
ls
命令可以列出当前目录的内容或指定目录
用法:
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.查看文件状态stat
文件相关信息:
metadata, data
每个文件有三个时间戳:
- access time 访问时间,atime,读取文件内容
- modify time 修改时间,mtime,改变文件内容(数据)
- change time 改变时间,ctime,元数据发生改变
6.确定文件内容
文件可以包含多种类型的数据,使用
file命令检查文件的类型,然后确定适当的打开命令或应用程序使用
格式
file [options] <filename>...
常用选项
:
- -b 列出文件辨识结果时,不显示文件名称
- -f filelist 列出文件filelist中文件名的文件类型
- -F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
- -L 查看对应软链接对应文件的文件类型
- --help 显示命令在线帮助
7.文件通配符模式 wildcard pattern
文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件
通配符采有特定的符号,表示特定的含义,此特符号称为元
meta
字符
常见的通配符如下:
* 匹配零个或多个字符,但不匹配 "." 开头的文件,即隐藏文件
? 匹配任何单个字符,一个汉字也算一个字符
~ 当前用户家目录
~mage 用户mage家目录
. 和 ~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z] 一个字母
[A-Z] 一个字母
[wang] 匹配列表中的任何的一个字符
[^wang] 匹配列表中的所有字符以外的字符
[^a-z] 匹配列表中的所有字符以外的字符
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母,表示 a-z
[:upper:]: 任意大写字母,表示 A-Z
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
8.创建空文件和刷新时间
touch
命令可以用来创建空文件或刷新文件的时间
格式:
touch [OPTION]... FILE...
选项说明:
- -a 仅改变 atime和ctime
- -m 仅改变 mtime和ctime
- -t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
- -c 如果文件不存在,则不予创建
9.复制文件和目录
利用
cp
(
copy
)命令可以实现文件或目录的复制
格式
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
常用选项
- -i 如果目标已存在,覆盖前提示是否覆盖
- -n 不覆盖,注意两者顺序
- -r, -R 递归复制目录及内部的所有内容
- -a 归档,相当于-dR --preserv=all,常用于备份功能
- -d --no-dereference --preserv=links 不复制原文件,只复制链接名
- --preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
- -p 等同--preserv=mode,ownership,timestamp
- -v --verbose
- -f --force
- -u --update 只复制源比目标更新文件或目标不存在的文件
- -b 目标存在,覆盖前先备份,默认形式为 filename~ ,只保留最近的一个备份
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>...
11.删除文件
使用
rm
命令可以删除文件
注意:此命令非常危险,慎重使用,建议使用
mv
代替
rm
格式:
rm [OPTION]... FILE...
常用选项:
- -i 交互式
- -f 强制删除
- -r 递归
- --no-preserve-root 删除/
rm
虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用
shred安全删除文件
shred
格式
shred [OPTION]... FILE...
常见选项:
- -z 最后一次覆盖添加0,以隐藏覆盖操作
- -v 能够显示操作进度
- -u 覆盖后截断并删除文件
- -n # 指定覆盖文件内容的次数(默认值是3次)
二、目录操作
1.显示目录树 tree
常见选项:
- -d: 只显示目录
- -L level:指定显示的层级数目
- -P pattern: 只显示由指定wild-card pattern匹配到的路径
2.创建目录 mkdir
常见选项:
- -p: 存在于不报错,且可自动创建所需的各目录
- -v: 显示详细信息
- -m MODE: 创建目录时直接指定权限
3.删除空目录 rmdir
常见选项:
- -p 递归删除父空目录
- -v 显示详细信息
注意:rmdir只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树