Linux的文件介绍、命令介绍及帮助手册查看、常用文件命令
前提
文件
首先,大家想一下Linux的文件是什么?众多的文件又是如何有效的组织起来的?
Linux的目录:路径映射
Linux的文件:存储空间存储的一段流式数据,对数据可以做到按名存取
文件系统
Linux文件系统又指的是什么?
文件系统是遵循FHS的有索引的层级结构
FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录
可参考:
https://blog.csdn.net/weixin_44983653/article/details/94335661
程序
Linux的核心思想是“一切皆文件”,那体现在Linux程序上具体指什么?
Linux的程序组成部分,主要有以下四个组成部分:
1、二进制程序文件:可执行文件,即二进制文件
2、库文件:可执行文件,即二进制文件(但不能独立执行,只能被调用时执行)
3、配置文件:能使用文件查看命令查看其内容的文件
4、帮助文件:能使用文件查看命令查看其内容的文件
命令的介绍
本文要讲的是Linux文件管理类命令,那Linux的命令又指是什么?
命令的语法通用格式:#COMMAND OPTIONS ARGUMENTS
备注:命令、选项和对象三个部分,用空格来进行分片
下面针对于 COMMADN、OPTIONS、ARGUMENTS 三个方面来对命令进行详细解释。
COMMAND(命令)
命令的语法通用格式:#COMMAND OPTIONS ARGUMENTS
# COMMAND: 发起一命令,请求内核将某个二进制程序运行为一个进程
# 状态变化:程序 --> 进程;静态 --> 动态(有生命周期)
命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件。
多数系统程序文件的存放路径:
/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin
普通命令路径:/bin, /usr/bin, /usr/local/bin
管理命令路径:/sbin, /usr/sbin, /usr/local/sbin
共享库的存放路径:
/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
32bits的库:/lib, /usr/lib, /usr/local/lib
64bits的库:/lib64, /usr/lib64, /usr/local/lib64
备注:
1、共享库文件不能直接被执行,需要被调用才能被执行
2、64位系统能兼容32位共享库,如果是32位系统的话,是不能调用64位库文件
3、并非所有的命令都有一个在某目录与之对应的可执行程序文件
命令格式
命令必须遵循特定格式规范:
exe, msi, ELF(Linux)
可使用如下命令进行查看:
# file COMMAD
# file /PATH/TO/SOMEFILE
示例:
[root@LeeMumu ~]# file /bin/ls # 命令 ls 的文件类型
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, BuildID[sha1]=eca98eeadafddff44caf37ae3d4b227132861218, stripped
[root@LeeMumu ~]# file / # 根的文件类型
/: directory
[root@LeeMumu ~]# file /etc/network/interfaces # 网络接口文件的文件类型
/etc/network/interfaces: ASCII text
命令种类
命令可分为两类:
1、由shell程序的自带的命令:内置命令(builtin)
2、独立的可执行程序文件,文件名即命令名:外部命令
shell程序介绍:
1、shell程序是独特的程序,负责解析用户提供的命令
2、使用shell程序时先检查语法是否正确,再进行程序执行
外部命令介绍:
1、外部命令是根据环境变量的路径中查找用户键入的命令字符串所对应的命令文件
2、环境变量利用如下命令查看(多个路径用 “:”区分,左向右按顺序查找)
# echo $PATH
3、示例如下:
[root@LeeMumu ~]# echo $PATH
/usr/lib64//bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
4、注意:SHELL 自带命令是没有文件路径的,属于内置命令 内嵌命令
查看命令类型,使用如下命令:
# type COMMAND
示例如下:
[root@LeeMumu ~]# type type # 命令 type 是一个内嵌命令
type is a shell builtin
[root@LeeMumu ~]# type ifconfig # 命令 ifconfig 是一个外部命令
ifconfig is /sbin/ifconfig
[root@LeeMumu ~]# type ll # 命令 ll 是一个命令别名
ll is aliased to `ls -alF'
[root@LeeMumu ~]# type ls # 命令 ls 是一个命令别名
ls is aliased to `ls --color=auto'
命令别名介绍:
获取所有可用别名的定义:
~]# alias
定义别名:
~]# alias NAME='COMMAND'
如果 COMMAND 没有空格,也可以不使用单引号,单引号只是表示中间是一串字符
注意:仅对当前shell进程有效
撤销别名:
~]# unalias NAME
OPTIONS(选项)
命令格式中的选项是指定命令的运行特性。
有些选项可以带参数,此成为选项参数。
选项有两种表现形式:
1、短选项:-C, 例如 -l, -d
注意:有些命令的选项没有 - ;同一命令同时使用多个短选项,多数可合并:-l -d = -ld
2、长选项:--word, 例如 --help, --human-readable
注意:长选项不能进行合并
ARGUMENTS(对象)
ARGUMENTS 是命令的作用对象,命令对什么生效。
不同的命令的参数,有些命令可同时带多个参数,多个之间以空白字符分隔。
示例:
[root@LeeMumu ~]#ls -ld /var /etc
命令的帮助手册获取
对于一些不熟悉的命令,可以通过查看命令的帮助手册来获取命令的具体使用方法,获取方式如下:
内部命令
内部命令的帮助获取使用如下命令:
# help COMMAND
外部命令
外部命令的帮助获取,有以下7种方式。
1、命令自带简要格式的使用帮助:
# COMMAND --help
2、使用 manual 手册
手册存放位置:
/usr/share/man
使用命令:
# man COMMAND
命令选项:
# man -M /PATH/TO/SOMEDIR:到指定目录下查找命令手册并打开之
man 手册章节说明:
SECTION:
NAME:功能性说明
SYNOPSIS:语法格式
DESCRIPTION:描述
OPTIONS:选项
EXAMPLES:使用示例
AUTHOR:作者
BUGS:报告程序bug的方式
SEE ALSO:参考
... ...
SYNOPSIS 说明:
[]:可选内容; 可省略
<>:必须提供的内容;
a|b|c:多选一;
...:同类内容可出现多个;
命令的 man 手册是压缩格式的文件,有章节之分:
/usr/share/man
man1, man2, man3, ...
各个章节存放的 man 手册内容,如下:
man1:用户命令
man2:系统调用
man3:C库调用
man4:设备文件及特殊文件
man5:文件格式(配置文件格式)
man6:游戏使用帮助
man7:杂项
man8:管理工具及守护进行
使用 man 命令时,可以指定具体的章节:
# man CHAPTER COMMAND
但是:并非所有命令在所有章节下都有手册。
查看命令所属具体章节的命令,如下:
# whatis COMMAND
此查询命令的执行过程是查询数据库进行的,可以使用如下命令手动更新数据库:
# makewhatis
示例:
[root@LeeMumu ~]# whatis ls # ls 的帮助手册所属章节
ls (1) - list directory contents
[root@LeeMumu ~]# whatis sudo # sudo 的帮助手册所属章节
sudo (8) - execute a command as another user
[root@LeeMumu ~]# whatis ifconfig # ifconfig 的帮助手册所属章节
ifconfig (8) - configure a network interface
man 命令打开手册后的操作方法:
1、翻屏 操作:
空格键:向文件尾翻一屏
b: 向文件首部翻一屏
Ctrl+d:向文件尾部翻半屏,downward
Ctrl+u:向文件首部翻半屏,upward
回车键:向文件尾部翻一行
k:向文件首部翻一行
G:跳转至最后一行
#G:跳转至指定行
22G:跳转至22行
1G:跳转至文件首部
2、文件搜索 操作:
/keyword:从文件首部向文件尾部依次查找,不区分字符大小写
?keyword:从文件尾部向文件首部依次查找,不区分字符大小写
n:查看下一个搜索匹配的内容,方向与查找命令方向相同
N:查看下一个搜索匹配的内容,方向与查找命令方向相反
3、退出 操作:
q 键盘:quit
3、在线帮助文档获取(很少用到),命令如下:
# info COMMAND
4、很多应用程序会自带帮助文档,如下:
存放位置:
/usr/share/doc/APP-VERSION
文档概要:
README:程序的相关的信息
INSTALL: 安装帮助
CHANGES:版本迭代时的改动信息
5、主流发行版的官方文档,官方网站可获取,比如:
RedHat 官网
http://www.redhat.com/doc
6、程序官方文档:
官方站点上的“Document”
7、搜索引擎
可以借助 google 进行搜索,格式如下:
keyword filetype:pdf
keyword site:domain.tld
...
常用的文件命令
1、pwd
以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个 / 表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。
pwd:printing working directory
绝对路径方式显示用户当前工作目录
2、cd
用来切换工作目录至 dirname 。 其中dirName表示法可为绝对路径或相对路径。
cd:change directory
切换用户当前工作目录
命令格式:
cd [/PATH/TO/SOMEDIR]
常用命令:
cd:切换回家目录,不带任何参数
cd ~:切换回自己的家目录(注意:bash中, ~ 表示家目录)
cd ~USERNAME:切换至指定用户的家目录
cd -:在上一次所在目录与当前目录之间来回切换
. : 当前目录
.. :上级目录
相关的环境变量
$PWD:当前工作目录
$OLDPWD:上一次的工作目录
3、ls
用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。
ls:list
列出指定目录下的内容
命令格式:
ls [OPTION]... [FILE]...
常用选项:
-a: 显示所有文件,包括隐藏文件
-A:显示除 . 和 .. 之外的所有文件
-l: --long, 长格式列表,即显示文件的详细属性信息
-h, --human-readable:对文件大小单位换算,换算后结果可能会非精确值
-d:查看目录自身而非其内部的文件列表
-r: reverse, 逆序显示
-R: recursive,递归显示
文件的详细属性信息及各部分含义:
-rw-r--r--. 1 root root 8957 10月 14 19:34 boot.log
-:文件类型,-, d, b, c, l, s, p
rw-r--r--
rw-:文件属主的权限
r--:文件属组的权限
r--:其它用户(非属主、属组)的权限
1:数字表示文件被硬链接的次数
root:文件的属主
root:文件的属组
8957:数字表示文件的大小,单位是字节
10月 14 19:34 :文件最近一次被修改的时间
boot.log:文件名
Linux系统上的文件类型:
-:常规文件;即f; rugular file
d: directory,目录文件;
b: block device,块设备文件,支持以“block”为单位进行随机访问
c:character device,字符设备文件,支持以“character”为单位进行线性访问
# ll /dev
major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序
minor number:次设备号,用于标识同一类型中的不同的设备
8位二进制表示:0-255
l:symbolic link,符号链接文件
p: pipe,命名管道
s: socket,套接字文件
示例:
~# ll
total 128
drwx------ 4 bp bp 4096 May 25 09:52 ./
drwxr-xr-x 4 root root 4096 Jan 20 2017 ../
... ...
-rw-r--r-- 1 bp bp 0 May 18 06:22 .sudo_as_admin_successful
-rw------- 1 root root 4343 May 19 21:42 .viminfo
~# ls -a
. .bash_history .bashrc .ecryptfs .lesshst .profile .sudo_as_admin_successful
.. .bash_logout .cache EOF .Private .ssh .viminfo
~# ls -A
.bash_history .bashrc .ecryptfs .lesshst .profile .sudo_as_admin_successful
.bash_logout .cache EOF .Private .ssh .viminfo
# type ll # ll 是命令别名
ll is aliased to `ls -alF'
# type ls # ls 是命令别名
ls is aliased to `ls --color=auto'
4、cat
连接文件并打印到标准输出设备上,cat经常用来显示文件的内容。
cat:concatenate
连接文件并打印到标准输出设备上
**注意:**文件文本查看工具,不能查看二进制文件。
比如:cat /bin/ls 就不能执行,会有乱码或者损坏文件,可通过 file 来进行查看文件类型。
# file /etc/network/interfaces # 文本文件
/etc/network/interfaces: ASCII text
# file /bin/ls # 可执行的二进制ELF文件
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, BuildID[sha1]=eca98eeadafddff44caf37ae3d4b227132861218, stripped
命令格式:
cat [OPTION]... [FILE]...
常用选项:
-n:给显示的文本行编号
-E: 显示行结束符 $
示例:
# cat 5.txt -n -E # 给显示的文本进行编号,并显示行结束符
1 total 16$
2 drwxr-xr-x 2 tangtang tangtang 4096 May 25 10:10 ./$
3 drwxrwxrwt 13 root root 4096 May 25 10:10 ../$
4 -rw-r--r-- 1 tangtang tangtang 388 May 19 21:27 1.txt$
5 -rw-r--r-- 1 tangtang tangtang 28 May 19 20:46 2.txt$
6 -rw-r--r-- 1 tangtang tangtang 0 May 19 20:47 3.txt$
7 -rw-r--r-- 1 tangtang tangtang 0 May 19 20:44 4.txt$
8 -rw-r--r-- 1 tangtang tangtang 0 May 25 10:10 5.txt$
5、tac
用于将文件以行为单位的反序输出,即第一行最后显示,最后一行先显示。
tac:将文件以行为单位的反序输出
与 cat 表示的顺序相反,命令字母排序也是相反的
命令格式:
tac [OPTION]... [FILE]...
常用选项:
-n:给显示的文本行编号
-E: 显示行结束符$
示例:
# tac 5.txt # 逆序显示 5.txt 的内容,可以上面的 cat 进行比较
-rw-r--r-- 1 tangtang tangtang 0 May 25 10:10 5.txt
-rw-r--r-- 1 tangtang tangtang 0 May 19 20:44 4.txt
-rw-r--r-- 1 tangtang tangtang 0 May 19 20:47 3.txt
-rw-r--r-- 1 tangtang tangtang 28 May 19 20:46 2.txt
-rw-r--r-- 1 tangtang tangtang 388 May 19 21:27 1.txt
drwxrwxrwt 13 root root 4096 May 25 10:10 ../
drwxr-xr-x 2 tangtang tangtang 4096 May 25 10:10 ./
total 16
6、head
用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
head:在屏幕上显示指定文件的开头若干行
命令格式:
head [options] FILE
常用选项:
-n<数字>:指定显示头部内容的行数
-n # 和 -# 都标识显示文件的前 # 行
-c<字符数>:指定显示头部内容的字符数
-v:总是显示文件名的头信息
-q:不显示文件名的头信息
7、tail
用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
tail:在屏幕上显示指定文件的末尾若干行
命令格式:
tail [options] FILE
常用选项:
-n<数字>:指定显示尾部内容的行数
-n # 和 -# 都标识显示文件的后 # 行
-c<字符数>:指定显示尾部内容的字符数
-f:查看文件尾部内容结束后不退出,跟随显示新增的行
示例:
# tail file # 显示文件 file 的最后10行
# tail -c 10 file # 显示文件 file 的最后10个字符
# tail -n 1 file # 显示文件 file 的最后1行
# tail -5 file # 显示文件 file 的最后5行
# tail -f file # 查看文件尾部内容结束后不退出,常用于看实时的 log
# cat test.txt
The line 1
The line 2
The line 3
The line 4
The line 5
# tail -2 test.txt
The line 4
The line 5
# tail -1 test.txt
The line 5
# tail -c 2 test.txt
5
8、more
该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:–More–(XX%)可以用下列不同的方法对提示做出回答:
按Space键:显示文本的下一屏内容
按Enier键:只显示文本的下一行内容
按斜线符:接着输入一个模式,可以在文本中寻找下一个相匹配的模式
按H键:显示帮助屏,该屏上有相关的帮助信息
按B键:显示上一屏内容
按Q键:退出命令
more:显示文件内容,每次显示一屏
命令格式:
more FILE
使用特点:
翻屏至文件尾部后自动退出
9、less
作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。
less:分屏上下翻页浏览文件内容
命令格式:
less FILE
使用特点:
翻屏至文件尾部不会自动退出
less和more的区别
1. less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示
2. less不必读整个文件,加载速度会比more更快
3. less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容
10、file
用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。
file:用来探测给定文件的类型
命令格式:
file [FILE]...
示例:
[root@LeeMumu ~]# file /bin/ls # 命令 ls 的文件类型
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, BuildID[sha1]=eca98eeadafddff44caf37ae3d4b227132861218, stripped
[root@LeeMumu ~]# file / # 根的文件类型
/: directory
[root@LeeMumu ~]# file /etc/network/interfaces # 网络接口文件的文件类型
/etc/network/interfaces: ASCII text
11、echo
echo 命令用于在 shell 中打印 shell 变量的值,或者直接输出指定的字符串。Linux 的 echo 命令,在 shell 编程中极为常用, 在终端下打印变量 value 的时候也是常常用到的,因此有必要了解下 echo 的用法 echo 命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
关于 echo 的详细使用方法可参考:https://blog.csdn.net/weixin_44983653/article/details/94458403
echo:回显
命令格式:
echo [SHORT-OPTION]... [STRING]...
常用选项:
-n: 不进行换行;
-e:让转义符生效;
\n:换行
\t:制表符
STRING 说明:
STRING可以使用引号,单引号和双引号均可用;
单引号:强引用,变量引用不执行替换
~]# echo '$SHELL'
双引号:弱引用,变量引用会被替换
~]# echo "$SHELL"
示例:
# echo $SHELL
/bin/bash
# echo '$SHELL'
$SHELL
# echo "$SHELL"
/bin/bash
注意;
变量引用的正规符号: ${name} 花括号可省略
# 后续会有相关的博客介绍 Linux变量
12、wc
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。wc同时也给出所指定文件的总统计数。
wc:word count
统计文件的字节数、字数、行数
命令格式:
wc [OPTION]... [FILE]...
常用选项:
-c # 统计字节数
-l # 统计行数
-m # 统计字符数。这个标志不能与 -c 标志一起使用
-w # 统计字数
-L # 打印最长行的长度
常用命令:
# wc test.txt # 不加任何选项参数,代表统计所有
7 8 70 test.txt
行数 单词数 字节数 文件名
# wc -l tset.txt # 统计文件行数,输出结果带文件名
# cat test.txt | wc -l # 输出结果只有行数,不带文件名,常用于 shell 脚本编程
# ls -l /PATH/TO/DIR | wc -l # 统计某个文件目录的文件个数(包含自身)
#wc -l *.txt # 统计当前目录下的所有 .txt 后缀的文件行数
# cat test.txt
The line 1
The line 2
The line 3
The line 4
The line 5
# wc test.txt
5 15 55 test.txt
# wc -l test.txt
5 test.txt
# cat test.txt | wc -l
5
13、cut
用来显示行中的指定部分,删除文件中指定字段。cut 经常用来显示文件的内容。
cut:连接文件并打印到标准输出设备上
命令格式:
cut OPTION... [FILE]...
常用选项:
-b:仅显示行中指定直接范围的内容
-c:仅显示行中指定范围的字符
-d:指定字段的分隔符,默认的字段分隔符为“TAB”
-f FIELDS:显示指定字段的内容
#:指定的单个字段
#-#:连续的多个字段
#,#:离散的多个字段
--complement:补足被选择的字节、字符或字段,即除了选择的字段,其它的打印
示例:
# cat test.txt
The line 1
The line 2
The line 3
The line 4
The line 5
# cut -d" " -f 1,2 test.txt
The line
The line
The line
The line
The line
# cut -d" " -f 3 test.txt
1
2
3
4
5
# cut -d" " -f 3 --complement test.txt
The line
The line
The line
The line
The line
14、sort
在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
sort:将文件进行排序并输出
命令格式:
sort [OPTION]... [FILE]...
常用选项:
-n:基于数值大小而非字符进行排序
-t CHAR:指定分隔符
-k #:用于排序比较的字段
-r:逆序排序
-f:忽略字符大小写
-u:重复的行只保留一份(复复行:连续且相同)
示例:
# cat sort.txt
2
3
2
2
4
1
3
2
2
4
1
# sort sort.txt
1
1
2
2
2
2
2
3
3
4
4
# sort -u sort.txt
1
2
3
4
# sort -ur sort.txt
4
3
2
1
15、uniq
用于报告或忽略文件中的重复行,一般与sort命令结合使用。
sort:报告或忽略文件中的重复行
命令格式:
uniq [OPTION]... [INPUT [OUTPUT]]
参数:
1、输入文件(INPUT):
指定要去除的重复行文件。如果不指定此项,则从标准读取数据
2、输出文件(OUTPUT):
指定要去除重复行后的内容要写入的输出文件,默认将内容显示到标准输出设备(显示终端)
常用选项:
-c:显示每行的重复次数
-u:仅显示未曾重复过的行
-d:仅显示重复过的的行
常用命令:
删除重复的行:
# sort file.txt | uniq
# sort -u file.txt
只显示未重复的行:
# uniq -u file.txt
#sort file.txt | uniq -u
统计各行在文件中出现的次数:
sort file.txt | uniq -c
在文件中找出重复的行:
sort file.txt | uniq -d
示例:
# cat uniq.txt
2
3
2
2
4
1
3
2
2
4
1
# sort uniq.txt | uniq
1
2
3
4
# sort -u uniq.txt
1
2
3
4
# sort uniq.txt | uniq -c
2 1
5 2
2 3
2 4
16、diff
在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。
diff:compare files line by line
比较给定的两个文件的不同
命令格式:
diff [OPTION]... FILES
常用命令:
# 使用 diff 命令生成补丁文件
# diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE > /PATH/TO/PATCH_FILE
示例:
# cat 1.txt
1
# cat 2.txt
1
2
# diff 1.txt 2.txt
1a2
> 2
17、patch
简单用法:向文件打补丁。
patch:打补丁
命令格式:
patch [OPTIONS] -i /PATH/TO/PATCH_FILE /PATH/TO/OLDFILE
patch /PATH/TO/OLDFILE < /PATH/TO/PATCH_FILE
示例:
# cat 1.txt
1
# cat 2.txt
1
2
# diff 1.txt 2.txt
1a2
> 2
# diff 1.txt 2.txt > patch.txt # 生成 patch 文件
# patch -i patch.txt 1.txt # 打补丁文件到 1.txt
patching file 1.txt
# cat 1.txt # 查看打补丁后的 1.txt,与 2.txt 一致
1
2