第四章 从命令管理文件
4.3.1.1.touch
-
用法一:
-
文件不存在时,创建文件
-
[root@rhcsa ~]# touch p1.txt
[root@rhcsa ~]# touch p2.txt p3.txt p4.txt
[root@rhcsa ~]# touch p{5..10}.txt
[root@rhcsa ~]# touch {1,2}{3,4}
#### 4.3.1.2.dd
- 制作指定个数及容量的大文件
```sh
dd if=来源 of=新文件名 count=数据块个数 bs=块容量
```
- if=/dev/zero:空数据设备文件,填充无数个数据 0
- of=新文件名:创建的大文件路径
- count=:数据块个数
- bs=:一个数据块容量
# 制作 100M 的大文件
[root@rhcsa test]# dd if=/dev/zero of=/root/test/z1 count=2 bs=50M
# 制作 1G 的大文件
[root@rhcsa test]# dd if=/dev/zero of=z3 count=1 bs=1G
# 制作光盘镜像
[root@rhcsa test]# dd if=/dev/sr0 of=RHEL9.iso
4.3.2.查看普通文件
4.3.2.1.直接查看文件内容
4.3.2.1.1.cat
-
查看文件内容(适合内容较少的文件)
-
文件内容直接显示在屏幕上
格式
cat -选项 文件名
选项
| 参数 | 功能 |
|---|---|
| -n | 显示行号(空行也显示行号) |
| -b | 空行不显示行号 |
[root@rhcsa ~]# cat anaconda-ks.cfg
[root@rhcsa ~]# cat -n anaconda-ks.cfg
[root@rhcsa ~]# cat -b anaconda-ks.cfg
.3.2.1.2.tac
-
倒序访问文件内容
[root@rhcsa ~]# tac anaconda-ks.cfg
4.3.2.1.3.more
-
翻页查看文件内容
-
适合内容多的文件
-
-
回车往下翻一行,空格(或者上下键)翻页,q 退出(或者看完文件自动退出)
-
注意:
-
退出后文件内容会保留在屏幕上
-
访问到文件底,自动退出
-
不能搜索
-
格式
more -选项 文件名
选项
| 参数 | 功能 |
|---|---|
| -s | 压缩多个空白行为一个空白行 |
4.3.2.1.4.less
-
同 more
-
注意:
-
退出后文件内容不会保留在屏幕上
-
访问到文件底,不会自动退出
-
支持搜索功能
-
格式
less -选项 文件名
选项
| 参数 | 功能 |
|---|---|
| -s | 压缩多个空白行为一个空白行 |
4.3.2.1.5.head
-
查看文件前 n 行内容
-
默认前 10 行
-
格式
head -选项 文件名
选项
| 参数 | 功能 |
|---|---|
| -数字 | 显示行数 |
[root@rhcsa ~]# head -2 a1 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
4.3.2.1.6.tail
-
查看文件后 n 行内容
-
默认后 10 行
-
格式
tail -选项 文件名
选项
| 参数 | 功能 |
|---|---|
| -数字 | 显示行数 |
| -f | 动态查看文件内容 |
[root@rhcsa ~]# tail /etc/passwd [root@rhcsa ~]# tail -2 /etc/passwd [root@rhcsa ~]# tail -f /var/log/messages # 监控日志
4.3.2.2.进一步处理文件内容
4.3.2.2.1. |
-
管道,将左边命令的结果作为右边命令的输入
命令A | 命令B | 命令C
使用管道会加大耗时,在极致追求效率 / 高性能的场景,要「尽量少用管道 |」,且管道越多、耗时越明显。
[root@rhcsa ~]# tail -10 /etc/passwd | head -1
4.3.2.2.2.grep
-
过滤文件内容(在指定文件中查找并显示含有指定字符串的行)
-
行匹配
-
格式
grep -选项 查找条件 文件名
选项
| 参数 | 功能 |
|---|---|
| -c | 仅显示查找到的行数(统计行) |
| -i | 忽略大小写 |
| -n | 显示行号 |
| -v | 反向选择(取反) |
| -r | 递归搜索文件内容(当前目录递归查找子目录,子文件) |
| -w | 按完整单词匹配 |
| -A 数字 | 匹配行及下 n 行 |
| -B 数字 | 匹配行及上 n 行 |
| -C 数字 | 匹配行及上下 n 行 |
# 过滤包含 a 字母的行
[root@rhcsa ~]# grep a anaconda-ks.cfg
# 统计包含 a 字母的行数
[root@rhcsa ~]# grep -c a anaconda-ks.cfg
# 不区分大小写统计包含 a/A 的行数
[root@rhcsa ~]# grep -ic a anaconda-ks.cfg
# 过滤包含 a 字母的行,并显示行号
[root@rhcsa ~]# grep -n a anaconda-ks.cfg
# 过滤不包含 a 字母的行
[root@rhcsa ~]# grep -v a anaconda-ks.cfg
# 以完整单词过滤包含 100 的行
[root@rhcsa ~]# grep -w 100 /etc/passwd
# 过滤包含 root 的行以及下两行
[root@rhcsa ~]# grep -A2 root anaconda-ks.cfg
# 过滤包含 root 的行以及上两行
[root@rhcsa ~]# grep -B2 root anaconda-ks.cfg
| 命令 | 说明 |
|---|---|
| grep h 文件名 | 匹配包含 h 的行 |
| grep ^root 文件名 | 匹配以 root 单词开头的行 |
| grep ^[h] 文件名 | 匹配以 h 开头的行 |
| grep ^[ab] 文件名 | 匹配以 a 或 b 开头的行 |
| grep ^[ ^ab] 文件名 | 匹配不以 a 或 b 开头的行 |
| grep ^[0-9] 文件名 | 匹配以数字开头的行 |
| grep ^[a-zA-Z] 文件名 | 匹配以字母开头的行1 |
| grep q$ 文件名 | 匹配以 q 结尾的行 |
| grep ^$ | 匹配空白行 |
| grep -r h . | 递归匹配当前目录下的子目录和子文件中包含 h 的行(包括隐藏文件) |
| grep -r h ./* | 递归匹配当前目录下的子目录和子文件中包含 h 的行(不包括隐藏文件) |
| grep -d skip h ./* | 只查找当前目录下的普通文件,不递归查找子目录(不包括隐藏文件 |
4.3.2.2.3.cut
-
按列提取文本内容
格式
cut -d "分隔符" -f列数字 文件名
[root@rhcsa ~]# head -2 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [root@rhcsa ~]# cut -d : -f1 /etc/passwd
-
提取内核版本号
[root@rhcsa ~]# uname -a | cut -d " " -f3 5.14.0-362.8.1.el9_3.x86_64
4.3.2.2.4.tr
-
替换 / 删除文本,输出到屏幕上
-
缩减连续字符
-
(源文件不做修改)
格式
tr -选项 被替换内容 新内容
选项
| 参数 | 功能 |
|---|---|
| -c | 取反 |
| -d | 删除 |
| -s | 缩减连续重复字符为单个字符(缩减多个空格为单个空格) |
# 替换 /etc/passwd 文件的 a-z 字符为 A-Z 字符 [root@rhcsa ~]# cat /etc/passwd | tr a-z A-Z # 删除 /etc/passwd 文件的 a-z 字符 [root@rhcsa ~]# cat /etc/passwd | tr -d a-z # 提取 IP 地址 [root@rhcsa ~]# ip a | grep ens160$ | tr -s " " | cut -d / -f1 | cut -d " " -f3 # 提取 MAC 地址 [root@rhcsa ~]# ip a | grep ether | tr -s " " | cut -d " " -f3
4.3.2.2.5.sort
-
排序显示
格式
sort -选项 文件名
选项
| 参数 | 功能 |
|---|---|
| -f | 忽略大小写(默认 a>A) |
| -n | 以数值排序 |
| -r | 逆序 |
| -u | 排序后,去除重复行 |
| -t | 指定间隔符 |
| -k | 按照第几列进行排序 |
示例
-
sort 命令执行后默认会按照字母顺序进行排序
# 取出所有账户名,并排序 [root@server ~]# cut -d ":" -f1 /etc/passwd | sort adm apache avahi bin chrony clevis cockpit-ws cockpit-wsinstance colord
-
sort -f 不区分大小写排序(默认 a > A)
-
sort -u 参数进行去重操作
# 图形化界面创建一个文件,写入下述内容 [root@server ~]# cat file A a A a A [root@server ~]# sort file a a A A A [root@server ~]# sort -f file A A A a a [root@server ~]# sort -u file a A
-
-n 数字排序
# 数字正序排序 [root@server ~]# cut -d ":" -f3 /etc/passwd | sort -n 0 1 2 3 # 逆序数字排序 [root@server ~]# cut -d ":" -f3 /etc/passwd | sort -nr 65534 1005 1002 1001
-
-t :指定分隔符
-
-k :指定按照第几列进行排序
[root@server ~]# sort -t ":" -k 3 -n /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)