- rename命令
# rename .txt .doc *.txt
将当前目录下所有.txt文件中的.txt替换成.doc
# rename you1.c you.c you1.c
将you1.c重命名为you.c
# rename you you0 you*
you001到you100的所有文件都被重命名为you0001到you0100
所有以you开头的文件都被重命名。
# rename you you0 you[1-9]*
从you1到you9的所有文件都被重命名为you01到you09
文件名中的you被替换为you0
常用通配符说明
? 表示一个任意字符
* 表示一个或一串任意字符
常用正则表达式符号说明
^ 匹配输入的开始位置
$ 匹配输入的结尾
. 匹配除换行符外的任意字符
+ 匹配前一个字符一次或多次,zo+ 可以匹配 zoo,但不匹配 z
[a-z] 表示某个范围内的字符
[^m-z] 否定的字符区间,与不在指定区间内的字符匹配
- file命令
# file you.c
显示文件类型
# file -b you.c
显示文件类型,不显示文件名称
# file -b -i you.c
显示文件类型, 显示MIME类别,不显示文件名称
# file -f you.txt *
查看文件中的文件名的文件类型
# file -z passwd.tar.gz
解读压缩文件的内容
-b 不输出文件名
-f 命名文件
-m list指定包含参数的文件列表.用冒号分开多个文件
-n 每检查完一个文件就强制刷新标准输出.
仅在检查一组文件时才有效. 将文件类型输出到管道时才采用此选项
-v 打印程序版本
-z 试图查看压缩文件内部信息
-L 显示符号链接文件的原文件
-s 读文件列表中的块特殊文件和字符特殊文件
- cat/tac命令
# cat /etc/passwd
查看文件的内容
# cat -n /etc/passwd
查看文件的内容,并显示行数编号
# cat -n /etc/passwd > file.txt*
查看文件的内容,并添加行数编号后输出到另外一个文件中
# cat /dev/null > file.txt
清空文件的内容
# cat /etc/passwd a.txt > file.txt
合并文件内容
# cat file.txt > file1.txt
复制文件
tac是将cat反写过来,所以功能跟cat相反
cat是由第一行到最后一行连续显示,而tac则是由最后一行到第一行反向显示
-A 等价于 -vET
-b 给非空输出行编号
-e 等价于 -vE
-E 在每行结束显示 $
-n 给所有输出行编号
-s 将所有的连续的多个空行替换为一个空行
-t 等价于 -vT
-T 把 TAB 字符显示为 ^I
-v 除了LFD和TAB之外所有控制符用 ^ 和 M- 记方式显示
- more命令
空白键(space)下一页显示, b 键往回(back)一页显示
# more /etc/passwd
查看文件内容, 按下回车向下浏览
# more -5 /etc/passwd
指定 NUM 每屏显示行数
# more +7 /etc/passwd
从文件第 NUM 行开始显示
-d 显示帮助
-f 统计逻辑行数而不是屏幕行数
-l 抑制换页(form feed)后的暂停
-p 不滚屏,清屏并显示文本
-c 不滚屏,显示文本并清理行尾
-u 抑制下划线
-s 将多个空行压缩为一行
-NUM 指定每屏显示的行数为 NUM
+NUM 从文件第 NUM 行开始显示
- less命令
less命令允许用户向前或向后浏览文件,而more命令只能向下浏览
less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页
Q键退出less程序
# less /etc/passwd
查看文件内容
# ps -aux | less
执行命令,然后分页显示
# history | less
查看命令历史使用记录并通过less分页显示
# less you.txt you1.txt
浏览多个文件
:n 浏览下一个文件
:p 浏览上一个文件
正在浏览一个文件时,使用 :e 打开另一个文件。
less file1
:e file2
命令内部操作
按键功能如下:
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
向前搜索
/ : 使用一个模式进行搜索,并定位到下一个匹配的文本
n : 向前查找下一个匹配的文本
N : 向后查找前一个匹配的文本
向后搜索
? : 使用模式进行搜索,并定位到前一个匹配的文本
n : 向后查找下一个匹配的文本
N : 向前查找前一个匹配的文本
全屏导航
ctrl + F :向前移动一屏
ctrl + B :向后移动一屏
ctrl + D :向前移动半屏
ctrl + U :向后移动半屏
单行导航
j : 向前移动一行
k : 向后移动一行
其它导航
G : 移动到最后一行
g : 移动到第一行
q / ZZ : 退出less命令
标记导航
ma : 使用 a 标记文本的当前位置
'a : 导航到标记 a 处
- head命令
# head /etc/passwd
默认情况下,将文件的前10行显示
# head -n 7 /etc/passwd
显示文件前7行,使用-n选项
# head file1.txt file2.txt
显示多个文件
-c --bytes=[-]K
显示每个文件的前K 字节内容
如果附加"-"参数,则除了每个文件的最后K字节外显示剩余全部内容
-n, --lines=[-]K
显示每个文件的前K 行内容
如果附加"-"参数,则除了每个文件的最后K行外显示剩余全部内容
-q 不显示包含给定文件名的文件头
- tail命令
# tail /etc/passwd
默认情况下,将文件的最后10行显示
# tail -n 7 /etc/passwd
显示文件最后7行,使用-n选项
-c 输出最后设定个字节
-f 当文件增长时,输出后续添加的数据
-s 与-f合用,表示在每次反复的间隔休眠S秒
-n 输出最后N行,而非默认的最后10行
--max-unchanged-stats=N
参看texinfo文档(默认为5)
--max-consecutive-size-changes=N
参看texinfo文档(默认为200)
-q 从不输出给出文件名的首部
-v 总是输出给出文件名的首部
- nl命令
# nl passwd
列出passwd的内容
# nl -b a passwd
列出passwd的内容,空行也加上行号
# nl -b a -n rz passwd
让行号前面自动补上0,统一输出格式
# nl -b t passwd
空行不显示行号
# nl -b a -n rz -w 3 passwd
行号指定宽度为3
命令行号默认为六位,要调整位数可以加上参数-w 3调整为3位
-b 指定行号指定的方式,主要有两种:
-b a 不论是否为空行,也同样列出行号
-b t 如果有空行,空的那一行不要列出行号(默认值)
-n 列出行号表示
-n ln 行号在最左方显示;
-n rn 行号在栏位的最右方显示,不加 0
-n rz 行号在栏位的最右方显示,加 0
-w 行号栏位的占用的位数
-p 在逻辑定界符处不重新开始计算
- which命令
# which bash
显示命令的路径
# which which
显示命令的别名
-a 查找全部内容,而非第一个文件
-n 指定文件名长度,指定的长度必须大于或等于最长的文件名
-p 与-n参数相同,但包括了文件的路径
-w 指定输出时栏位的宽度
-V 显示版本信息
- grep命令
# grep "root" /etc/passwd
文件中搜索一个单词
# grep "root" passwd passwd1
多文件中查找单词
# grep -v "root" /etc/passwd
输出除匹配之外的所有行
# grep -c "root" /etc/passwd
统计文件或者文本中包含匹配字符串的行数
# grep -i "ROOT" /etc/passwd
忽略大小写搜索
# grep -c ^$ /etc/passwd
统计文件中空行的行数
# grep -c ^[^$] /etc/passwd
统计文件中非空行的行数
-E 扩展正则表达式egrep
-F 一个换行符分隔的字符串的集合fgrep
-G 基本正则
-P 调用的perl正则
-e 后面根正则模式,默认无
-f 从文件中获得匹配模式
-i 不区分大小写
-w 匹配整个单词
-x 匹配整行
-z 一个 0 字节的数据行,但不是空行
grep的规则表达式:
^ 锚定行的开始 ^grep匹配所有以grep开头的行
$ 锚定行的结束 grep$匹配所有以grep结尾的行
. 匹配一个非换行符的字符 gr.p匹配gr后接一个任意字符,然后是p
* 匹配零个或多个先前字符 *grep匹配所有空格后紧跟grep的行
.* 一起用代表任意字符
[] 匹配一个指定范围内的字符 [Gg]rep匹配Grep和grep
[^] 匹配一个不在指定范围内的字符 [^A-FH-Z]rep匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行
\(..\) 标记匹配字符 \(love\) love被标记为1
\< 锚定单词的开始 \<grep 匹配包含以grep开头的单词的行
\> 锚定单词的结束 grep\> 匹配包含以grep结尾的单词的行
x\{m\} 重复字符x,m次 0\{5\}匹配包含5个o的行
x\{m,\} 重复字符x,至少m次 o\{5,\}匹配至少有5个o的行
x\{m,n\} 重复字符x,至少m次,不多于n次 o\{5,10\} 匹配5--10个o的行
\w 匹配文字和数字字符[A-Za-z0-9] G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p
\W \w的反置形式,匹配一个或多个非单词字符,如点号句号等
\b 单词锁定符 \bgrep\b 只匹配grep。
- sort命令
# sort txt
将文本默认排序
从首字符向后,依次按ASCII码值进行比较,升序输出
# sort -u txt
忽略相同行
# sort -b txt
忽略每行前面开始出的空格字符
# sort -c txt
检查文件是否已经按照顺序排序
-b 忽略前导的空白区域
-d 只考虑空白区域和字母字符
-f 忽略字母大小写
-g 按照常规数值排序
-i 只排序可打印字符
-h 使用易读性数字
-n 根据字符串数值比较
-R 根据随机hash 排序 从指定文件中获得随机字节
-r 逆序输出排序结果
指定的格式排序:一般数字-g,高可读性-h,月份-M,数字-n,随机-R,版本-V
-V 在文本内进行自然版本排序
- paste命令
# paste file1 file2
合并两个文件
# paste -d '*' file1 file2
指定字符代表制表符作为分隔符
# paste -s -d '*' file1 file2
每个文件合并成行而不是按行粘贴
# paste -s file1
行列倒转
# paste file1 file2 file3
拼接多个文件
将每个指定文件里的每一行整合到对应一行里,之间用制表符分隔
如果没有指定文件,或指定文件为"-",程序将从标准输入读取数据
- split命令
在默认情况下将按照每1000行切割成一个小文件
# split -l 30 passwd
指定行数来切割,默认文件名是xaa,xab排序的
# split -b 1b passwd
指定文件大小来切割
# cat xa* > passwd1
合并文件
-b 输出文件大小定为SIZE字节
-C 输出文件大小定为最多SIZE字节的行
-l 输出文件大小定为设定行
-d 使用数字而不是字母作为切割后的小文件的后缀
-v 显示详细的处理信息
b: 512(blocks)
K: 1024(kibiBytes)
KB: 1000(kiloBytes)
M: 1024*1024(mebiBytes)
MB: 1000*1000(megaBytes)
G: 1024*1024*1024(gibiBytes)
GB: 1000*1000*1000(gibaBytes)
T, P, E, Z, Y