接上一篇「探索 Linux 文件系统」
查看文件
cat
cat (concatenate)命令用于连接文件并打印在标准输出上,这是最常用的查看文本文件的方式之一。
# cat <文件名>
# -n 选项用于显示行号
cat -n /etc/hosts 1 127.0.0.1 localhost
2 127.0.1.1 debian
3
4 # The following lines are desirable for IPv6 capable hosts
5 ::1 localhost ip6-localhost ip6-loopback
6 ff02::1 ip6-allnodes
7 ff02::2 ip6-allrouters当一起查看多个文件时,可以空格隔开文件名,如:cat <文件1> <文件2>
cat 命令不是交互式的,它会一下子将文件的所有内容都显示出来,所以如果文件内容过多就会有一部分看不到了,对于小型文本文件来说 cat 命令是适合的。
另外,cat 命令还可以将多个文本文件拼接到一起,如现在有两个文件 大纲.txt 与 正文.txt,想要将它们的内容拼接起来:
cat 大纲.txt 正文.txt > 说明.txt如此就会拼接并在当前目录生成一个名为 说明.txt 的文件。
> 表示将内容重定向到一个新文件而不是打印在标准输出上。
⚠️ 注意,如果这个新文件没有则创建,如果已存在则覆盖。
less 与 more
如果文本文件的内容过多超出了终端窗口,就可以使用 less。
💡
less扩展了more的功能也是其新版本,可能是 Linux 上最先进和最常用的阅读工具,所以只用less就好了。
sudo less /var/log/auth.log💡 加上
sudo是因为非特权用户权限不够
less 的一些快捷键:
- 显示帮助:
h; - 向上一行:
方向键上; - 向下一行:
方向键下; - 向前翻页:
b或Page Up; - 向后翻页:
空格键或Page Down; - 跳至页首:
g; - 跳至页尾:
G; - 搜索关键词:
/关键词; - 重复上一次搜索:
n; - 退出:
q;
此处因为有大小写的运用所以区分大小写
tail
默认情况下 tail 将显示指定文本文件的最后 10 行内容,可以使用 -n 选项指定行号:
# -n 3 用于显示 /etc/hosts 文件的最后三行
tail -n 3 /etc/hosts::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters可以使用 + 用于显示从第一行显示到末尾,如显示 /etc/hosts 文件的第五行直至最后一行:
tail -n +5 /etc/hoststail 还可以用来显示日志文件的最新内容,如配置 -f 选项显示日志文件的最新(也就是最后的) 10 行内容并实时刷新:
sudo tail -f /var/log/auth.log💡 加上
sudo是因为非特权用户权限不够
head
head 和 tail 相反,默认情况下用于显示文本文件的前 10 行内容,同样可以使用 -n 选项指定行号:
# 显示 /etc/hosts 文件的头两行
head -n 2 /etc/hosts新建文件和目录
touch
touch 用于修改文件的时间戳,但也可以用来创建一个空白文件:
touch README.txt一般来说不建议在文件名中使用空格,如果想要隔开单词,可以使用连字符 - 或下划线 _
如果一定要空格怎么办?用引号包裹,例如:touch 'READ ME.txt'
mkdir
mkdir 命令用于创建目录:
# 创建名为 2020 的目录
mkdir 2020如果想一次创建多个目录,可以用空格隔开
mkdir Documents Downloads如果想创建目录时同时创建子目录,可使用 -p 选项
mkdir -p /Documents/2020Documents/
└── 2020⚠️ 需要注意的是,一般情况下如果创建的目录名称已存在会收到一个错误提示,但如果使用 -p 选项则不会出现错误提示。
复制文件和目录
cp
cp 用于复制文件和目录
# cp <被复制的文件> <复制到目标位置>
# 复制 config.txt 成一个新文件到当前目录并命名为 config.txt.bak,相当于备份
cp config.txt config.txt.bak⚠️ 注意,如果复制到的文件(如上示例的 config.txt.bak)已存在,将会覆盖,为了避免误操作导致数据丢失建议加上 -i 选项,这样当出现同名文件时会看到提示询问是否覆盖。
# 将 config.txt 与 readme.txt 复制 当前目录下的 config 目录
cp -i config.txt readme.txt ./config使用 -r 选项用于递归,如复制 /etc 目录及其子目录的所有文件复制到当前目录:
# -r 选项用于递归
sudo cp -r /etc .? 加上
sudo是因为非特权用户权限不够
一般情况下复制到的新文件不会保留原文件的所有者(属主属组)、权限、时间戳,如果想要保留这些信息,可以加上 -p 选项:
cp -p /etc/hosts .
ls -ldrwxr-xr-x 69 root root 4096 Aug 28 00:05 etccp 命令的一些实用选项:
| 选项 | 作用 | |
|---|---|---|
| -i | –interactive | 遇到同名文件覆盖前提示 |
| -r | –recursive | 递归复制目录(即包括其子目录及内容),复制目录时需要改选项 |
| -p | –preserve | 保留原文件的属性 |
| -u | –update | 只处理目标目录中不存在或相比目标目录中现有文件更新的文件 |
| -v | –verbose | 显示操作信息 |
移动或重命名文件和目录
mv
mv 可用于移动或重命名文件
# mv <被移动文件> <移动到的目标位置>
# 多个文件用空格隔开
# 移动文件 nginx.conf 与 apache.conf 到当前目录下的 config 目录
mv nginx.conf apache.conf ./config# mv <原文件名> <新文件名>
# 重命名文件 nginx.txt 为 ngixng.conf
mv nginx.txt nginx.confmv 命令的一些实用选项:
| 选项 | 作用 | |
|---|---|---|
| -i | –interactive | 遇到同名文件覆盖前提示 |
| -u | –update | 只处理目标目录中不存在或相比目标目录中现有文件更新的文件 |
| -v | –verbose | 显示操作信息 |
删除文件和目录
rm
rm 命令用于删除文件和目录
rm config.txt为了保险期间,建议在使用 -i 选项用于显示删除提示,如:
mkdir config
touch ./config/nginx.conf ./config/apache.conf
rm -i ./config/*.conf如上,在删除当前目录下的 config 目录里,以 .conf 为后缀名的文件时,可以逐个确认
删除目录可以使用 -rf 选项:
rm -rf ./configrm 命令的一些实用选项:
| 选项 | 作用 | |
|---|---|---|
| -i | –interactive | 删除文件前显示确认提示 |
| -r | –recursive | 递归删除 |
| -f | –force | 忽略不存在的文件和参数 |
| -v | –verbose | 显示操作信息 |
‼️ 重要:注意,数据无价! 在进行删除操作时一定要确认,举个例子:
rm -rf /home /test/config如上,本来想要删除目录为 /home/test/config,结果在输入命令时在 /home 后面多了个空格,就变成了删除整个主目录…
为了避免这样的损失,在进行删除操作时多加谨慎,可以使用 Tab 键补全路径、使用 -i 选项进行确认提示等措施保全操作,规避风险。
rmdir
rmdir 用于删除目录:
rmdir Downloads
# 如果要删除的目录不是空的,可以使用 --ignore-fail-on-non-empty 选项:
rmdir --ignore-fail-on-non-empty Downloads
# rm 命令使用 -rf 选项也可达到相同作用:
rm -rf Downloads查找文件和目录
find
find 用于在目录层次结构中搜索文件,是一个非常强大的命令,可按照名称、所有者、权限等条件搜索
# 查找主目录下的文件
find ~# 按文件类型搜索可使用 `-type` 选项:
# f 普通文件
# d 目录
# l 符号链接
# b 块设备文件
# c 字符设备文件
# 例如查找主目录下的所有普通文件
find ~ -type f
# 按文件名搜索可使用 `-name` 选项:
# 可使用通配符,使用通配符时建议用英文引号包裹,如下示例
find ~ -type f -name "*.txt"
# 按文件体积搜索可使用 `-size` 选项,单位如下:
# - b:512B 块,不指定时的默认单位
# - c:B
# - w:字(2B)
# - k:KB
# - M:MB
# - G:GB
find ~ -type f -size 1M # 等于 1 MB 的普通文件
find ~ -type f -size +1M # 大于 1 MB 的普通文件
find ~ -type f -size -1M # 小于 1 MB 的普通文件
find ~ -type f -size +5M -size -10M # 搜索主目录下文件大小在 5~10 MB 之间的普通文件
# 按文件属主可使用 -user 选项:
find / -user root
# 按文件属组可使用 -group 选项:
find / -group sudo
# 文件夹层级深度可使用 `-maxdepth` 选项:
find / -type d -maxdepth 2which
which 命令可用于查找可执行文件的具体路径
which find
# -a 选项用于列出所有结果
which -a find浏览「Linux 专题」可查看更多内容