这个测试表达式 [] 是什么意思?

lot*_*ous 6 grep ps regular-expression

我见过有人使用命令:

ps -ef | grep [h]ttpd

和输出是:

阿帕奇 25125 31006 0 21:54 ? 00:00:00 /usr/sbin/httpd
阿帕奇 26869 31006 0 22:04 ? 00:00:00 /usr/sbin/httpd
阿帕奇 27349 31006 0 22:07 ? 00:00:00 /usr/sbin/httpd
阿帕奇 27696 31006 0 22:09 ? 00:00:00 /usr/sbin/httpd
阿帕奇 28534 31006 0 22:14 ? 00:00:00 /usr/sbin/httpd
根 31006 1 0 16:16 ? 00:00:00 /usr/sbin/httpd
阿帕奇 31011 31006 0 16:16 ? 00:00:00 /usr/sbin/httpd

字母“h”周围的2个括号在哪里grep做什么?

Mat*_*Mat 6

这是防止grep命令本身出现在ps输出中的技巧。

[...]是一种字符类规范,即[ab2]恰好匹配一个必须是a,b或 的字符2[h]仅匹配h.

诀窍是[h]ttpmatch http,但它匹配本身。