# 一.基础命令
# 1.more 可翻页查看
more /etc/man.config
--More--(31%) <== 重点在这一行,光标也会在这里等待你的命令
2
- 空格键(Space):代表向下翻一页。
- Enter:代表向下滚动一行。
- / 字符串:代表在当前显示的内容中,向下查找 “字符串” 这个关键字。
- :f:立刻显示出文件名与当前的行号。
- q:代表立即退出,不予显示。
- b 或 [ctrl]-b:往回翻,不过该操作只对文件有用。
有时候我们需要搜索should
这个字符串
[wenjie@localhost ~]$ more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
/should <== 输入了 / 之后,光标会在最下面一行等待
2
3
4
5
6
7
8
你输入了**/
之后,光标会在最后一行等待,并且等待你的输入,你输入了字符串后并且按下[Enter]
之后,就开始向下查找。如果想重复查找该字符串,可以直接按下n
**即可。
# 2.less 前后翻页
#类似于 ‘more’ 命令,但是它允许在文件中和正向操作一样的反向操作
less file1
2
more: 顾名思义显示更多 less: 由于 more 不能后退,就取 more 的反义词 less 加上后退功能 所以 Linux 里流传着这样一句话:"less is more".
总结下 more 和 less 的区别:
- less 可以按键盘上下方向键显示上下内容,more 不能通过上下方向键控制显示
- less 不必读整个文件,加载速度会比 more 更快
- less 退出后 shell 不会留下刚显示的内容,而 more 退出后会在 shell 上留下刚显示的内容
- 由于 more 不能后退
# 3.生产实用
#关键词上下100行
cat 2024-01-09.log |grep -C 100 'No value present'
2
# 二.进阶命令
# 1.日志太多
可以先打出空行,再执行页面点击,可以看到最新的日志信息
# 2.反向查找
#从最后一行开始反向查看一个文件的内容
tac file1
2
# 3.生产查询日志
#查看filename中含有abc所在行后4行内容 -A after
cat filename | grep abc -A4
#查看filename中含有ab所在行前4行内容 -B before
cat filename | grep abc -B4
2
3
4
5
# 三.head 和 tail
# 1.显示前 i 行
#显示开头i行name.txt的内容
head -n i name.txt
2
# 2.从 i 行开始
#i是起始行号,从i行开始,一直到文件末尾
head -n -i name.txt
2
# 3.区别说明
head
是一个用于显示文件开头内容的命令。在这里,-n
选项用于指定要显示的行数。i
代表一个整数,表示要显示的行数。
head -n i name.txt
会显示文件name.txt
的前i
行内容。head -n -i name.txt
也会显示文件name.txt
的内容,但这里的i
是起始行号,而不是要显示的总行数。它会从文件的第i
行开始显示,一直到文件的末尾。
所以,两者的区别在于:
head -n i name.txt
显示的是文件的前i
行。head -n -i name.txt
显示的是从文件的第i
行开始到文件的末尾的所有内容。
# 4.tail 尾部
#显示最后 i 行的内容
tail -n i name.txt
2
# 5.从 i 行开始
#从I开始显示到结束的内容
tail -n +i name.txt
2
# 6.实时查看
#实时查看被添加到一个文件中的内容
tail -f name.txt
2
# 7.实时查看日志
#实时查看最后1000行
tail -n 1000 -f filename
tail -fn 1000 name.txt
tail -1000f name.txt
2
3
4
# 8.等待新建
类似于-f,但是文件丢失以后会等待该文件新建
tail -F name.txt
# 四.wc 命令
# 1.统计行数
#统计文本的行数,字数,字符数
wc 1.bxt
2
# 2.行数
#文本行数,只计算行数
wc -l 1.txt
2
# 3.文本数
#文本字数,只计算字数
wc -w 1.txt
2
# 4.字符数
#字符数
wc -m 1.txt
2
# 5.字节数
#只计算字节数
wc -c 1.txt
2
# 6.统计过滤后行数
#统计行数
ps -ef | grep node | wc -l
2
# 五.cat 命令
# 1.汇总
# 2.直接查询
#查看文件内容
cat name.txt
2
# 3.cat -n
显示行号
#查看最后10行
cat -n xxx.log | grep tail -n 10
#显示每一行的行号
cat -n name.txt
2
3
4
5
# 4.cat -b
显示非空行的行号
cat -b xxx.log
# 5.cat -s
合并空行
#用于压缩多个连续的空白行为一个空白行
cat -s name.txt
2
# 6.cat -E
#在每一行的末尾显示一个 $ 符号
cat -E name.txt
2
# 7.cat -T
#将制表符(Tab)字符显示为 ^I
cat -T name.txt
2
# 8.cat -A
#相当于同时使用 -nET 参数,显示行号、行尾 $ 符号以及制表符。
cat -A name.txt
2
# 六.重定向
把本来要显示在终端的命令结果,输送到别的地方(到文件中或者作为其他命令的输入)。
# 1.输出重定向 >
>
表示重定向到新的文件,用标准输出覆盖原有文件的内容, cut -d , -f 1 notes.csv > name.csv
,它表示通过逗号剪切 notes.csv
文件(剪切完有 3 个部分)获取第一个部分,重定向到 name.csv
文件。
我们来看一个具体示例,学习它的使用,假设我们有一个文件 notes.csv
,文件内容如下:
Mark1, 951 / 100, 很不错1;
Mark2, 952 / 100, 很不错2;
Mark3, 953 / 100, 很不错3;
Mark4, 954 / 100, 很不错4;
Mark5, 955 / 100, 很不错5;
Mark6, 956 / 100, 很不错6;
2
3
4
5
6
执行命令: cut -d , -f 1 notes.csv > name.csv
最后输出如下内容:
Mark1;
Mark2;
Mark3;
Mark4;
Mark5;
Mark6;
2
3
4
5
6
#查询111中的内容输出到222
cat 111.txt > 222.txt
2
【注意】使用 >
要注意,如果输出的文件不存在它会新建一个,如果输出的文件已经存在,则会覆盖。因此执行这个操作要非常小心,以免覆盖其它重要文件。
# 2.输出重定向 >>
表示重定向到文件末尾,因此它不会像 >
命令这么危险,它是追加到文件的末尾(当然如果文件不存在,也会被创建),将标准输出追加到文件后面。
再次执行 cut -d , -f 1 notes.csv >> name.csv
,则会把名字追加到 name.csv
里面。
Mark1;
Mark2;
Mark3;
Mark4;
Mark5;
Mark6;
Mark1;
Mark2;
Mark3;
Mark4;
Mark5;
Mark6;
2
3
4
5
6
7
8
9
10
11
12
# 3.输出重定向 2>
用标准错误输出覆盖原有文件内容
cat not_exist_file.csv > res.txt 2> errors.log
- 当我们
cat
一个文件时,会把文件内容打印到屏幕上,这个是标准输出; - 当使用了
> res.txt
时,则不会打印到屏幕,会把标准输出写入文件res.txt
文件中; 2> errors.log
当发生错误时会写入errors.log
文件中。
# 4.输出重定向 2>>
标准错误输出(追加到文件末尾)同 >>
相似。
# 5.输出重定向 2>&1
标准输出和标准错误输出都重定向到一个地方,用标准输出和标准错误输出覆盖原文件内容
#覆盖输出
cat not_exist_file.csv > res.txt 2>&1
2
3
4
# 6.追加输出
将标准输出和标准错误输出追加到原文件后面
#追加输出
cat not_exist_file.csv >> res.txt 2>&1
2
# 7.输入重定向
#将文件内容作为标准输入,会输出111.text的内容
cat < 111.text
2
# 8.结束输入
- 将 2 个结束标识符之间的内容作为标准输入
- 结束标识符由用户自定义,常用 EOF(end offile)
- 这个经常用,覆盖脚本
# <<[结束标识符],覆盖
cat << EOF > 111.txt
111
222
333
EOF
# <<[结束标识符],不覆盖,追加,服务器上可以经常使用
cat << EOF > 111.txt
111
222
333
EOF
2
3
4
5
6
7
8
9
10
11
12
13
# 七.tee 命令
# 1. 基本用法
在 Linux 系统中,tee
命令是一个非常实用的工具,它允许用户将数据同时输出到标准输出(通常是终端)和文件。这在很多情况下都非常有用,比如当你需要查看实时输出的同时,也希望将输出保存到文件中以供后续分析。
tee
命令的基本语法如下:
tee [选项]... [文件]...
这里的 [选项]
是可选的,而 [文件]
是你希望将输出写入的文件名。
# 2. 选项说明
-a
或--append
:以追加模式写入文件,而不是覆盖现有内容。-i
或--ignore-interrupts
:即使接收到中断信号(如 Ctrl+C),tee
也会继续运行。-p
:与-i
选项相同,忽略中断信号。-s
或--silent
:静默模式,不输出错误或警告信息。--help
:显示帮助信息。--version
:显示版本信息。
# 3.实时查看和记录日志
在系统管理员的日常工作中,经常需要查看程序的日志输出。使用 tee
命令,可以将日志同时显示在终端上并保存到文件中,方便事后分析。
your_command | tee /path/to/logfile.log
# 4.重定向输出到多个文件
有时你可能需要将同一输出同时保存到多个文件中。通过使用管道和 tee
,可以轻松实现这一点。
your_command | tee file1.log | tee file2.log
注意,这种方式会创建两个进程,如果对性能有要求,可以考虑使用如下方式:
your_command | tee file1.log > file2.log
# 5.结合 grep
过滤输出
如果你只想将匹配特定模式的输出保存到文件中,可以结合使用 tee
和 grep
。
your_command | tee /path/to/logfile.log | grep "pattern"
这样,只有包含 "pattern" 的行会被 grep
显示在终端上,而所有输出都会被 tee
保存到文件中。
# 6.结合 awk
处理数据
awk
是一个强大的文本处理工具,可以与 tee
结合使用,对输出数据进行复杂的处理。
your_command | tee /path/to/logfile.log | awk '{print $1}'
# 7.实用示例
假设你正在运行一个数据库备份脚本,并希望实时查看进度,同时将输出保存到日志文件中:
./backup_script.sh | tee /var/log/backup.log
这样,你就可以在终端上看到备份进度,并且所有的输出都会被保存到 /var/log/backup.log
文件中。