linux常用命令-grep之各种搜索

935 阅读3分钟

这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战

按进程名字搜进程

如何使用?

//查询进程
ps -ef | grep tomcat

说明一下,ps(process status)是查看进程的意思。

grep,是搜索的意思。

然后,主要是结合了管道|,即把前面一个命令的输出,作为后面一个命令的输入。


这里再重点讲一下,参数-ef。

因为如果不知道参数是什么意思,就很难记住。平时更多的可能是完全靠死记硬背,但是如果知道是什么意思,那么就不用刻意记忆了。

那-ef,到底指什么呢?不加行不行?不行。

e的作用和A一样,A的作用是显示进程所有信息,A一看就知道是all的意思,所以根本不需要刻意记忆。

那为什么要带上A呢?因为ps命令默认显示的字段没有那么多,然后你grep的时候可能就找不到对应的进程了——所以,必须加-A。最好用-A,因为不需要记忆。

那f呢?不是都已经显示所有信息了吗?为什么还要加f呢?

很明显,因为-A虽然是all,但是其实并没有显示所有的字段,而如果加了f,就可以显示更多的字段,比如父进程id等——所以f(full)才是显示真正的完整的信息。

官方解释如下:

搜日志里的关键字

这个在生产环境用的最多,因为经常要按关键字搜索日志,查看问题。

怎么做?

grep 关键字 info.log

上面的是搜索单个文件,下面的是搜索多个文件。

grep 关键字 info.log error.log

显示的结果是,所有匹配到的行。

如果想要查看匹配行的前后行,怎么做?加参数-C 数字。

grep -C 5 gzh test.txt

表示,除了显示匹配行,并且还要显示匹配行的上面5行和下面5行。

搜编辑文件里的内容

怎么搜?

  1. vi test.txt
  2. 输入:/关键字。

然后按回车,就会匹配到第一个,并且高亮显示。

  1. 怎么匹配下一个或者上一个?

匹配下一个按n。

匹配上一个按N(即shift + n)。

搜屏幕里的内容

怎么搜?

直接ctrl + f,可能不同操作系统快捷键稍微有点不一样。

搜完之后,关键字会高亮。

搜索历史命令

如何使用?

//搜索历史命令
history | grep gzh

history命令,是显示所有历史命令。但是历史命令如果太多了,然后你又不记得你输入过的历史命令了,怎么办?按关键字搜索,搜索的内容是历史命令的完整输入,而不仅仅是历史命令本身。

搜索的目的是,如果一个命令太长,省的自己敲半天。

//搜索结果
```
gongzhihaodeMacBook-Pro:~ gongzhihao$ history | grep gzh
   51  grep gongzhihao jmeter.log
   56  cd gzh
   61  cd gzh
   77  locate gzh
   82  cd gzh
  117  grep gzh test2.txt
  126  history | grep gzh
gongzhihaodeMacBook-Pro:~ gongzhihao$
```