常用文件操作命令
- 显示文件内容:cat、more、less、head、tail
- 搜索、排序、去重:grep、sort、uniq
- 比较:comm、diff
- 复制、删除、移动:cp、rm、mv
- 统计:wc
- 查找:find
- 压缩解压缩:bzip2,、gzip、tar
1 显示文件命令
1.1 cat命令
格式:cat [参数] …[文件]…
说明:把多个文件连接后输出到屏幕显示,若加“>文件名”则输出到另一个文件中。
常用参数:
-b: 从1开始对所有非空输出行进行编号
-n: 从1开始对所有输出行编号
-s: 将连续两行以上的空白行合并成一行空白行
1.2 more命令
格式:more [参数] [文件]
说明:该命令显示文本文件的内容,一次显示一屏,满屏后停下来,可按如下键继续:
1. Space键: 默认显示文本的下一屏内容
2. Enter键: 默认显示文本的下一行内容
3. d键或CTRL+D: 向下显示文本半屏,默认为11行
4. b键或CTRL+B: 默认显示文本的上一屏内容
5. q或INTERRUPT键: 退出more命令
常用参数
参数 | 说明 |
---|---|
-num | 指定一个整数,表示一屏显示多少行 |
-d | 在每屛底部显示信息,包括当前显示的百分比,按键提示等 |
-c或-p | 不滚屏,在显示下一屏之前清屏 |
+num | 从行号num开始显示 |
+/pattern | 定义一字符串,在文件中查找该字符串,从字符串后显示(如果要在a.txt中查找字符串"abc"并从该字符串处显示,则命令为:more +/abc a.txt) |
1.3 less命令
格式:less [参数] [文件]
说明: 与more命令相似,分屏显示文件内容,less命令允许用户向前或向后浏览文件,按q键退出。
常用参数
参数 | 说明 |
---|---|
-i | 搜索时忽略大小写,除非搜索串中包含大写字母 |
-l | 搜索时忽略大小写 |
-m | 显示读取文件的百分比 |
-M | 显示读取文件的百分比、行号及总行数 |
-N | 在每行前输出行号 |
-p pattern | 定义一字符串,在文件中查找该字符串,从该字符串后开始显示(如要在a.txt中查找字符串"abc"并从该字符串处显示,则命令为less -p abc a.txt) |
1.4 head命令
格式: head [参数] [文件]
说明: 用于查看一个文本文件的开头部分,行数由参数值决定,默认是10
常用参数
参数 | 说明 |
---|---|
-c | 显示文件前面num个字节(如显示a.txt前面的5个字节内容,命令为:head -c5 a.txt) |
-n | 显示文件前面num行,不指定此参数显示前10行(如显示a.txt前面的5行内容 ,命令为:head -n5 a.txt) |
1.5 tail命令
格式: tail [参数] [文件]
说明: 用于查看一文本文件末尾若干行,行数由参数值决定,默认为10。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。
常用参数
参数 | 说明 |
---|---|
-c | 显示文件最后面的NUM个字节,如:显示a.txt后5个字节内容,命令为:tail -c 5 a.txt |
-n | 显示文件最后面的行,不指定此参数显示10行,如显示a.txt后5行内容,命令为:tail -n 5 a.txt |
2. 搜索、排序及去掉重复行命令
2.1 grep命令
格式: grep [参数] 查找模式 [文件]
说明: grep家族包括grep、egrep和fgrep。egrep是grep的扩展,可使用扩展的字符串模式进行搜索,fgrep则是把所有字母看作单词,不识别正则表达式。如果没有指定文件名,grep命令会搜索标准输入
常用参数
参数 | 说明 |
---|---|
-b | 在显示符合匹配的字符串前面,标识改行第一个字符串的位编码 |
-c | 计算符合匹配字符串的 |
-E | 间查找模式解释为扩展的正则表达式,相当于egrep |
-F | 将查找模式解释为单纯的字符串,相当于fgrep |
-i | 忽略字符串大小写 |
-n | 在现实包含匹配字符串的行之前,标示改行的行号 |
-v | 反转查找,显示不包含匹配字符串的文本行 |
-V | 显示版本信息 |
-x | 只显示全行都严格匹配的行 |
示例:
-b参数 在显示符合匹配的字符串前面,标识改行第一个字符串的位编码
root@hpc-admin:~# grep -b "Root" /etc/ssh/sshd_config
809:PermitRootLogin yes
2266:# the setting of "PermitRootLogin without-password".
-c参数 计算符合匹配字符串的
root@hpc-admin:~# grep -c "Root" /etc/ssh/sshd_config
2
-E参数 间查找模式解释为扩展的正则表达式,相当于egrep
root@hpc-admin:~# grep -E "*oot*" /etc/ssh/sshd_config
PermitRootLogin yes
# the setting of "PermitRootLogin without-password".
#ChrootDirectory none
**-F参数 将查找模式解释为单纯的字符串,相当于fgrep **
root@hpc-admin:~# grep -F "# t" /etc/ssh/sshd_config
# the setting of "PermitRootLogin without-password".
-i参数 忽略字符串大小写
root@hpc-admin:~# grep -i "root" /etc/ssh/sshd_config
PermitRootLogin yes
# the setting of "PermitRootLogin without-password".
#ChrootDirectory none
-n参数 在现实包含匹配字符串的行之前,标示改行的行号
root@hpc-admin:~# grep -n "root" /etc/ssh/sshd_config
106:#ChrootDirectory none
-v参数 反转查找,显示不包含匹配字符串的文本行
root@hpc-admin:~# grep -vi "s" /etc/ssh/sshd_config
# default value.
#Port 22
#RekeyLimit default none
# Logging
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
-V参数 显示版本信息
root@hpc-admin:~# grep -V
grep (GNU grep) 3.4
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and others; see
<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
-x 只显示全行都严格匹配的行
root@hpc-admin:~# grep -x "#ChrootDirectory none" /etc/ssh/sshd_config
#ChrootDirectory none
2.2 sort命令
格式: sort [参数] …[文件]…
说明: sort命令对指定文件中所有的行排序,将结果显示在标准输出上,如不指定输入文件或使用“-”,表示排序内容来自标准输入
缺省情况下以行为关键字按ASCII字符顺序进行排序
常用参数:
参数 | 说明 |
---|---|
-m | 若给定文件已排好序,合并文件 |
-c | 检查指定文件是否排序,未排序打印出错信息,以状态值1退出 |
-u | 对排序前后相同的行只留其中一行 |
-o | 文件名:将排序输出写到输出文件中而不是标准输出 |
-d | 按字典顺序排序 |
-f | 忽略字母大小写 |
-r | 按逆序输出排序结果(默认排序输出是按升序的) |
+pos1-pos2 | 指定一个或几个字段作为排序关键字,字段位置从pos1开始到pos2为止(包括pos1,不包括pos2)。如果不指定pos2,则关键字为从pos1到行尾,字段和字符的位置从0开始 |
2.3 uniq命令
格式: uniq [参数]… [输入文件[输出文件]]
说明: 检查及删除文本文件中重复出现的行
常用参数:
参数 | 说明 |
---|---|
-c | 显示输出中,在每行行首加上本行在文本中出现的次数 |
-d | 只显示文件中的重复行 |
-u | 只显示文件中不重复的各行 |
3、比较文件内容命令
3.1 comm命令
格式: comm [选项]… 文件1 文件2
说明: comm命令对两个已经排好序的文件进行比较,comm从文件1和文件2中读取正文行进行比较,生成3行输出:在两个文件中都出现的行,仅在文件1中出现的行,仅在文件2中出现的行
常用参数:
\-123: 选项1,2和3分别表示不显示comm输出的第一列、第二列和第三列
3.2 diff命令
格式: diff /[参数/]… 文件列表
说明: diff 命令比较文本文件,并找出它们的不同
常用参数
参数 | 说明 |
---|---|
-b | 忽略空格造成的不同 |
-B | 忽略空行造成的不同 |
-i | 忽略大小写的不同 |
-r | 当比较的目录都是目录时,递归比较子目录中的文件 |
示例:
测试文件
root@hpc-admin:/home/yangjie# cat a.txt
Diff
comP are
different file
root@hpc-admin:/home/yangjie# cat b.txt
diff
compare
different file
默认模式
root@hpc-admin:/home/yangjie# diff a.txt b.txt
1,3c1,2
< Diff
< comP are
<
---
> diff
> compare
-b参数 忽略空格造成的不同
root@hpc-admin:/home/yangjie# diff -b a.txt b.txt
1,3c1,2
< Diff
< comP are
<
---
> diff
> compare
-B参数 忽略空行造成的不同
root@hpc-admin:/home/yangjie/test/test1# diff -B a.txt b.txt
1,3c1,2
< Diff
< comP are
<
---
> diff
> compare
-i参数 忽略大小写造成的不同
root@hpc-admin:/home/yangjie/test/test1# diff -i a.txt b.txt
2,3c2
< comP are
<
---
> compare
-r参数 当比较的目录都是目录时,递归比较子目录中的文件
root@hpc-admin:/home/yangjie# diff ./test/test1/ ./test/test2/
diff ./test/test1/c.txt ./test/test2/c.txt
4,5c4
< parameter -r
< Parameter -C
---
> paramete -r
4.复制、删除和移动文件的命令
4.1 cp命令
格式: cp [选项] 源文件或目录 目标文件或目录
说明: cp命令完成文件的复制。
如果源是普通文件,该命令把源文件复制成指定的目标文件或复制到指定的目标目录中;
如果源是目录,目标是一已经存在的目录,该命令把源目录下的所有文件和子目录都复制到目标目录中;
如果源是目录,目标不是一已存在的目录,命令出现错误信息。
常用参数
参数 | 说明 |
---|---|
-a | 等同于-dpR |
-d | 复制符号链接(即快捷方式文件)时,把目标文件或目录也建立为符号链接,并指向与源文件或目录链接的原始文件或目录 |
-f | 强行复制文件或者目录 |
-i | 覆盖目标文件前需要确认 |
-n | 不覆盖已存在目标文件 |
-p | 复制源文件或者目录内容的同时也复制文件属性 |
-R或-r | 递归复制目录,将源文件下所有文件及子目录都复制到目标位置 |
4.2 rm命令
格式: rm [参数] …文件或目录…
说明: rm命令可以删除文件或目录,删除目录必须要加“-r”选项
常用参数
参数 | 说明 |
---|---|
-f | 强制删除文件或者目录 |
-i | 删除文件或目录前提示要用户确认 |
-r或者-R | 递归删除目录及其下属各级子目录和相应的文件 |
4.3 mv命令
格式: mv [参数] 源文件或目录 目标文件或目录
说明: mv命令可移动文件或目录;更改文件或目录的名称
常用参数
参数 | 说明 |
---|---|
-i | 覆盖文件前需要确认 |
-f | 若目标文件或目录已存在,直接覆盖 |
-n | 不覆盖已存在的文件 |
-u | 移动或更改文件名时,若目标文件已存在,且文件日期比源文件新,则不覆盖目标文件 |
5、文件内容统计命令
5.1 wc命令
格式: wc [选项] …[文件]…
说明: wc命令统计给定文件中的字节数、字数、行数
常用命令
命令 | 说明 |
---|---|
-c或-bytes | 统计字节数 |
-m或-chars | 统计字符数 |
-i或-lines | 统计行数 |
-w或-words | 统计字数 |
6、查找文件和目录命令
6.1 find命令
格式: find [路径名…] [表达式]
说明: find命令用于查找符合条件的文件和目录,路径名是用空各隔开的要搜索文件的目录名清单,表达式包含要寻找的文件的匹配规范或说明。
表达式是从左向右求值的,只要表达式中的测试结果为真,则进行下一个测试
常用表达式
常用表达式 | 说明 |
---|---|
-amin n | 查找系统中最后n分钟曾被访问过的文件或目录,+超过n分钟,-少于n分钟 |
-anewer <参考文件或目录> | 查找其存取文件时间较指定文件或目录的存取时间更接近现在的文件或目录 |
-atime n | 查找系统中最后n天内被访问过的文件或目录,+超过n天,-少于n天 |
-cmin n | 查找系统中最后n分钟被更改的文件或目录 |
-cnewer <参考文件或目录> | 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录 |
-ctime n | 查找系统中最后n天内,+超过n天,-少于n天 |
-depth | 从指定目录下最深层的子目录开始查找 |
-daystart | 从本日开始计算时间 |
-exec <执行命令> | 如果find指令的回传至为true,则执行该命令 |
-fstype <文件系统类型> | 只查找该文件系统类型下的文件或者目录 |
-gid <群组识别码> | 查找符合指定群组识别码的文件或目录 |
-group <群组名称> | 查找符合群组名称的文件或目录 |
-inum <inode编号> | 查找符合inode变好的文件或目录 |
-mmin n | 查找在n分钟内曾被更改过的文件或目录 |
-mtime n | 查找在n天内曾被更改过的文件或目录 |
-name <范式样本> | 查找文件名为指定范式样本的文件或目录 |
-path <范式样本> | 在路径为指定范式样本的路径下查找 |
-perm <权限数值> | 查找符合指定权限数值的文件或目录 |
如果find指令的回传值为True,就将文件或目录名称列出到标准输出,格式为每列一个名称 | |
-prune | 不查找以类似字符串为文件名的文件或者目录 |
7.文件的压缩与备份
7.1 bzip2命令
格式: bzip2 [选项] [要压缩的文件]
说明: .bz2文件的压缩程序,并删除原始的文件
常用选项
参数 | 说明 |
---|---|
-c | 将压缩或解压缩的结果送到标准输出 |
-d | 执行解压缩 |
-f | 压缩或者解压缩时,若输出文件与现有文件同名,覆盖现有文件 |
-k | bzip2在压缩或者解压缩后,保留原始文件 |
7.2 gzip命令
格式: gzip [选项] [文件…]
说明: gzip压缩会产生后缀为“.gz”的压缩文件,并删除原始文件
常用选项
参数 | 说明 |
---|---|
-c | 压缩后文件输出到标准输出设备,不改变原文件 |
-d | 解开压缩文件 |
-f | 强行压缩文件 |
-n | 压缩文件时,不保存原来的文件名称及时间戳记 |
-N | 压缩文件时,保存原来的文件名称和时间戳记 |
-r | 递归处理,将指定目录下的所有文件及目录一并处理 |
7.3 tar(tape archive)命令
格式: tar [选项…] [文件或目录]…
说明: tar是用来建立、还原文件的工具程序,它可以加入、解开备份文件内的文件
常用选项
参数 | 说明 |
---|---|
-A | 新增tar文件 |
-c | 建立新的归档文件 |
-f <备份文件> | 列出备份/归档文件的内容 |
-v | 显示执行过程详细信息 |
-x | 释放归档/备份文件 |
-z | 有gzip属性的gz |
-j | 有bz2属性的bz2 |
--delete | 从备份文件中删除指定的文件 |