A expressão de colchetes é parte do bash shell (e outras shells também) da correspondência de padrões de classe de caractere do grep.
Por padrão, o programa grep
compreende expressões regulares básicas POSIX. Com isso você pode definir classes de personagens. Por exemplo, ps -ef | grep [ab9]irefox
encontraria " a irefox", " b irefox", " 9 irefixo" se existirem, mas não "< b> ab irefox ".
O comando grep [a-zA-Z0-9]irefox
encontraria todos os processos que começam com exatamente uma letra ou número e terminam em "irefox".
Portanto, ps -ef | grep firefox
procura por linhas com firefox
. Como o próprio processo grep tem o "firefox", o grep também o encontra. Adicionando um []
, estamos apenas procurando pela classe de caractere "[f]" (que consiste apenas na letra "f" e é equivalente a apenas um "f" sem os colchetes). A vantagem dos colchetes agora é que a string "firefox" não aparece mais no comando grep. Portanto, o próprio grep não aparecerá no resultado do grep.
Como muitas pessoas não estão familiarizadas com colchetes como correspondência de classes de caracteres e expressões regulares em geral, o segundo resultado pode parecer um pouco misterioso.
Se você quiser corrigir o segundo resultado, poderá usá-lo desta maneira:
ps -ef | grep [f]irefox > data
grep firefox data