1.1 cat命令
- cat命令来自于英文单词concatenate的缩写,其功能是用于查看文件内容。在Linux系统中有很多用于查看文件内容的命令,例如more、tail、head……等等,每个命令都有各自的特点。cat命令适合查看内容较少的、纯文本的文件
- 对于内容较多的文件,使用cat命令查看后会在屏幕上快速滚屏,用户往往看不清所显示的具体内容,只好按Ctrl+c键中断命令的执行,所以对于大文件,干脆用more命令吧~
语法格式:cat [参数] 文件
常用参数:
参数 | 描述 |
---|---|
-n | 显示行数(空行也编号) |
-s | 显示行数(多个空行算一个编号) |
-b | 显示行数(空行不编号) |
-E | 每行结束处显示$符号 |
-T | 将TAB字符显示为 ^I符号 |
-v | 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外 |
-e | 等价于”-vE”组合 |
-t | 等价于”-vT”组合 |
-A | 等价于 -vET组合 |
–help | 显示帮助信息 |
–version | 显示版本信息 |
# 查看某个文件的内容
[root@iZbp1gy0nsh5vadm0h4sjjZ cat]# cat 1.txt
# 查看某个文件的内容,并显示行号
[root@iZbp1gy0nsh5vadm0h4sjjZ cat]# cat -n 1.txt
# 搭配空设备文件和输出重定向操作符,将某个文件内容清空
[root@iZbp1gy0nsh5vadm0h4sjjZ cat]# cat /dev/null > 1.txt
# 持续写入文件内容,直到碰到EOF符后才会结束并保存
[root@linuxcool ~]# cat > anaconda-ks.cfg << EOF
> Hello,World
> Linux!~
> EOF
[root@linuxcool ~]# cat anaconda-ks.cfg
Hello,World
Linux!~
1.2 less和more
- more命令的功能是用于分页显示文本文件内容。如果文本文件中的内容较多较长,使用cat命令读取后则很难看清,这时使用more命令进行分页查看就更加合适了,可以把文本内容一页一页的显示在终端界面上,用户每按一次回车即向下一行,每按一次空格即向下一页,直至看完为止。
- less也是浏览文件,但是less命令只是Linux系统引入的。more命令是所有的UNIX系统上必备的
语法格式:less [参数] 文件
命令 | 说明 |
---|---|
less abc.txt | 查看 abc.txt 文本内容 |
↑ | 上一行 |
↓ | 下一行 |
G | 第一页 |
g | 最后一页 |
空格 | 下一页 |
q | 推出 |
/关键字 | 搜索关键词 |
我们主要还是说一下more
语法格式:more [参数] 文件
参数 | 命令 |
---|---|
-l | more在通常情况下把 ^L 当作特殊字符, 遇到这个字符就会暂停,-l选项可以阻止这种特性 |
-f | 计算实际的行数,而非自动换行的行数 |
-p | 先清除屏幕再显示文本文件的剩余内容 |
-c | 与-p相似,不滚屏,先显示内容再清除旧内容 |
-s | 多个空行压缩成一行显示 |
-u | 禁止下划线 |
+/pattern | 在每个文档显示前搜寻该字(pattern),然后从该字串之后开始显示 |
+num | 从第 num 行开始显示 |
-num | 指定每屏显示的行数 |
空格键 | 向前移动一个屏幕,也就是翻页 |
Enter键 | 一次移动一行 |
b | 往上(向上)移动一个屏幕 |
/字符串 | 向前搜索这个字符串 |
n | 发现这个字符串的下一次出现 |
q | 退出more命令并返回操作系统提示符下 |
v | 在当前行七档/usr/bin/vi(vi是LInux或UNIX自带的文本编辑器) |
more指令例子:
-
准备的1.txt文件数据
cyz 123 456 cyz1 cyz2 cyz3 cyz4
-
分页的话,默认每页显示10行,我这里设置显示2行
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# more -2 1.txt cyz 123 --More--(24%)
按enter键,会每次加载一行:
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# more -2 1.txt cyz 123 456 --More--(36%)
再按空格,加载下一页:
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# more -2 1.txt cyz 123 456 cyz1 cyz2 --More--(69%)
如果加载完会自动退出,或者我们手动按q退出
-
(v和+num)参数配合grep命令来完成数据修改
我们通过grep精确(或者模糊)搜索我们想要查找的数据,并显示行号
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# grep -wn 'cyz1' 1.txt 4:cyz1
使用more命令定位到这行,这里每页大小我设置为2,+4则是表示从第四行开始
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# more +4 -2 1.txt cyz1 cyz2 --More--(69%)
按v进入vi模式,然后数据修改之后,保存退出即可
1.3 echo命令
- echo是用于在终端设备上输出指定字符串或变量提取后值的命令,能够给用户一些简单的提醒信息,也可以将输出的指定字符串内容同管道符一起传递给后续命令作为标准输入信息再来进行二次处理,又或者同输出重定向符一起操作,将信息直接写入到文件中
- 如需提取变量值,需在变量名称前加入$符号做提取,变量名称一般均为大写形式
语法格式 echo [-neE] [arg …]
-n:
表示输出字符串不换行-e:
表示对于转义字符按照对应的方式进行处理若不加-e ,那么在输出时转义字符会按照普通字符进行处理,并不会达到自己想要达到的目的。)-E
:禁用转义解释
转义字符
转义字符 | 含义 |
---|---|
\b | 删除前一个字符 |
\n | 换行 |
\t | 水平制表符(tab) |
\v | 垂直制表符(tab) |
\c | \c后面的字符将不会输出,输出完毕后也不会换行 |
\r | 光标移动到首行,不换行 |
\f | 换行,光标停在原处 |
\e | 删除后一个字符 |
\ | 输出\ |
\0nnn | 输出八进制nnn代表的ASCII字符 |
\xHH | 输出十六进制数HH代表的ASCII字符 |
\a | 输出一个警告的声音 |
例子:转移符号记得加-e
[root@localhost test]# echo "hello\tworld"
hello\tworld
[root@localhost test]# echo -e "hello\tworld"
hello world
echo的重定向:
- 重定向是Shell中的一个重要内容,可以查看我的文章Linux中的重定向
- ench命令的重定向功能经常被用于清空文件内容(删除文件)的使用,具体看Linux中清空文件的方式
- echo覆盖文件:echo “content” > filename
- 将content覆盖到filename文件当中去,filename文件当中之前的内容不复存在了,实际上是文件的内容
- echo追加内容:echo “content” >> filename
- 将content追加到filename文件后,对filename文件之前的内容不修改,只进行添加,也叫追加重定向
1.4 head命令
- head命令的功能是显示文件开头的内容,默认为前10行
语法格式:head [参数] 文件
常用参数:
参数 | 描述 |
---|---|
-n <数字> | 定义显示行数 |
-c <数字> | 指定显示头部内容的字符数 |
-v | 总是显示文件名的头信息 |
-q | 不显示文件名的头信息 |
例子:
-
显示文件的前几行, 默认是10行
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# head -n 10 1.txt cyz 123 456 cyz1 cyz2 cyz3 cyz4 [root@iZbp1gy0nsh5vadm0h4sjjZ grep]# head -n 3 1.txt cyz 123 456
1.5 tail命令
- tail命令的功能是用于查看文件尾部内容,例如默认会在终端界面上显示出指定文件的末尾十行,如果
指定了多个文件,则会在显示的每个文件内容前面加上文件名来加以区分
- 高阶玩法的-f参数作用是持续显示文件的尾部最新内容,类似于机场候机厅的大屏幕,总会把最新的消息展示给用户,对阅读日志文件尤为适合,而不需要手动刷新
- 这个对于服务器上查看日志很方便,可以实时监控请求
语法格式:tail [参数] 文件
常用参数:
-c | 输出文件尾部的N(N为整数)个字节内容 |
---|---|
-f | 持续显示文件最新追加的内容 |
-F | 与选项“-follow=name”和“–retry”连用时功能相同 |
-n | 输出文件的尾部N(N位数字)行内容 |
–retry | 即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。 |
–pid=<进程号> | 与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令 |
–help | 显示指令的帮助信息 |
–version | 显示指令的版本信息 |
例子:
-
持续输出日志文件最新的末尾100行
tail -fn 100 admin.l
1.6 vi和vim
- vi和vim命令的功能是用于编辑文本内容,是Linux系统字符界面下最常用的文本编辑工具,能够编辑任何的ASCII格式文件,对内容进行创建、查找、替换、修改、删除、复制、粘贴等操作。编写文件时,无需担心目标文件是否存在,若不存在则会自动在内存中创建,随保存操作输出到硬盘中。
Vim之所以能得到广大厂商与用户的认可,原因在于Vim编辑器中设置了3种模式-命令模式、末行模式和编辑模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工作效率,而且用户在习惯之后会觉得相当顺手。
-
命令模式:控制光标移动,可对问你本进行复制、黏贴、查找等工作
-
输入模式:正常的文本录入
-
末行模式: 保存或退出文档,以及设置编辑环境
在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作。而每次在编写玩文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。在Vim中,无法直接从输入模式切换到末行模式
, 举个例子,我们编辑完要保存,需要先按esc -> 然后: -> 然后wq!,或者q或者q! 进行保存
接下来我们介绍一些命令:
表4-1 命令模式中最常用的一些命令
命令 | 作用 |
---|---|
dd | 删除(剪切)光标所在整行 |
5dd | 删除(剪切)从光标处开始的5行 |
yy | 复制光标所在整行 |
5yy | 复制从光标处开始的5行 |
n | 显示搜索命令定位到的下一个字符串 |
N | 显示搜索命令定位到的上一个字符串 |
u | 撤销上一步的操作 |
p | 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面 |
末行模式主要用于保存或退出文件,以及设置Vim编辑器中的工作环境,还可以让用户执行外部的LInux命令如表所示
表4-2 末行模式中最常用的一些命令
命令 | 作用 |
---|---|
:w | 保存 |
:q | 退出 |
:q! | 强制退出(放弃对文档的修改内容) |
:wq! | 强制保存退出 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:命令 | 执行该命令 |
:整数 | 跳转到该行 |
:s /one/two | 将当前光标所在行的第一个one替换成two |
:s /one/two/g | 将当前光标所在行的所有one替换成two |
:%s/one/two/g | 将全文中的所有one替换成two |
?字符串 | 在文本中从下至上搜索该字符串 |
/字符串 | 在文本中从上至下搜索该字符串 |
例子:
-
新增或编辑一个文件,并修改里面的内容
# 3.txt不存在,这里新建他,并按i输入3行 -> 按esc -> (:wq)保存退出 [root@iZbp1gy0nsh5vadm0h4sjjZ vi]# vi 3.txt aaa bbb ccc "3.txt" 3L, 12C
-
搜索字符串:
# 命令模式下,我们/a -> enter, 接下来按n往下搜索,按N往上搜索 [root@iZbp1gy0nsh5vadm0h4sjjZ vi]# vi 3.txt aaa bbb ccc ddd ass aza /a
其实下面的grep搜索也可以,而且支持多个文件一起搜索,然后使用:number这个命令定位到改行
1.7 grep命令
- grep来自于英文词组“global search regular expression and print out the line”的缩写,意思是用于全面搜索的正则表达式,并将结果输出。人们通常会将grep命令与正则表达式搭配使用,参数作为搜索过程中的补充或对输出结果的筛选,命令模式十分灵活
- 与之容易混淆的是egrep命令和fgrep命令。如果把grep命令当作是标准搜索命令,那么egrep则是扩展搜索命令,等价于“grep -E”命令,支持扩展的正则表达式。而fgrep则是快速搜索命令,等价于“grep -F”命令,不支持正则表达式,直接按照字符串内容进行匹配
语法格式: grep [参数] 文件
参数 | 描述 |
---|---|
-i | 忽略大小写 |
-c | 只输出匹配行的数量 |
-l | 只列出符合匹配的文件名,不列出具体的匹配行 |
-n | 列出所有的匹配行,显示行号 |
-h | 查询多文件时不显示文件名 |
-s | 不显示不存在、没有匹配文本的错误信息 |
-v | 显示不包含匹配文本的所有行 |
-w | 匹配整词 |
-x | 匹配整行 |
-r | 递归搜索 |
-q | 禁止输出任何结果,已退出状态表示搜索是否成功 |
-b | 打印匹配行距文件头部的偏移量,以字节为单位 |
-o | 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位 |
-F | 匹配固定字符串的内容 |
-E | 支持扩展的正则表达式 |
例子: 我先准备了2个txt文件
-
1.txt
cyz 123 456 cyz1 cyz2 cyz3 cyz4
-
2.txt
cyzdddd 11111cyzaaaa 11111cyzaaaacyz
开始一些grep操作:
-
搜索文件中包含某个关键词的内容
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# grep -in 'CYz' 1.txt 2.txt 1.txt:1:cyz 1.txt:4:cyz1 1.txt:5:cyz2 1.txt:6:cyz3 1.txt:7:cyz4 2.txt:1:cyzdddd 2.txt:2:11111cyzaaaa 2.txt:3:11111cyzaaaacyz
-in 代表忽略大小写,并显示匹配行的行号
-
搜索文件中以某个关键词开头或者结尾的内容
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# grep '^cyz' 1.txt 2.txt 1.txt:cyz 1.txt:cyz1 1.txt:cyz2 1.txt:cyz3 1.txt:cyz4 2.txt:cyzdddd [root@iZbp1gy0nsh5vadm0h4sjjZ grep]# grep 'cyz$' 1.txt 2.txt 1.txt:cyz 2.txt:11111cyzaaaacyz
支持正则表达式去搜索
-
递归搜索,不仅指定目录,还搜索
其子目录内(递归)
是否有关键词的文件:[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# grep -srl 'cyzdddd' 1.txt 2.txt 2.txt
-
精确词搜索,就是eq(=)搜索, 上面的都是模糊搜索
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# grep -w 'cyzdddd' 1.txt 2.txt 2.txt:cyzdddd
-
匹配整行搜索,就是你这一行得和搜索条件一致
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# grep -x 'cyzdddd' 1.txt 2.txt 2.txt:cyzdddd
-
查看每个文件匹配的数量
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# grep -c 'cyzdddd' 1.txt 2.txt 1.txt:0 2.txt:1
1.8 wc命令
- wc命令来自于英文词组“Word count”的缩写,其功能是用于统计文件的字节数、单词数、行数等信息,并将统计结果输出到终端界面。利用wc命令可以很快的计算出准确的单词数及行数,评估出文本的内容长度,要想了解一个文件,不妨先wc一下吧~
语法格式:wc [参数] 文件
常用参数:
参数 | 命令 |
---|---|
-w | 统计单词数 |
-c | 统计字节数 |
-l | 统计行数 |
-m | 统计字符数 |
-L | 显示最长行的长度 |
–help | 显示帮助信息 |
–version | 显示版本信息 |
例子:
-
显示行数,其他就不举例子了
[root@iZbp1gy0nsh5vadm0h4sjjZ grep]# wc -l 1.txt 7 1.txt
1.9 sort命令
- Linux sort 命令用于将文本文件内容加以排序
- 这里的排序并不改变文件的内容,只是用来展示的
语法格式:sort [参数] 文件
常用参数:
参数 | 描述 |
---|---|
-b | 忽略每行前面开始出的空格字符 |
-c | 检查文件是否已经按照顺序排序 |
-d | 除字母、数字及空格字符外,忽略其他字符 |
-f | 将小写字母视为大写字母 |
-i | 除040至176之间的ASCII字符外,忽略其他字符 |
-m | 将几个排序号的文件进行合并 |
-M | 将前面3个字母依照月份的缩写进行排序 |
-n | 依照数值的大小排序 |
-o <输出文件> | 将排序后的结果存入制定的文件 |
-r | 以相反的顺序来排序 |
-t <分隔字符> | 指定排序时所用的栏位分隔字符 |
-k | 指定需要排序的栏位 |
例子:
-
对指定的文件内容按照字母顺序进行排序
[root@linuxcool ~]# cat fruit.txt banana pear apple orange raspaberry [root@linuxcool ~]# sort fruit.txt apple banana orange pear raspaberry
-
对指定的文件内容按照数字大小进行排序
[root@linuxprobe ~]# cat number.txt 45 12 3 98 82 67 24 56 9 [root@linuxprobe ~]# sort -n number.txt 3 9 12 24 45 56 67 82 98