无法grep管道输出

无法grep管道输出

我可以使用 ripgrep 来做这样的事情:

ps aux | rg 'process name'

我可以搜索上一个命令的输出。由于某种原因,这对我使用常规grep.如果我做:

ps aux | grep 'process name'

它忽略我试图通过管道输入 grep 的内容,并在当前工作目录中搜索我输入的进程。

这是 ps aux 的输出: ps 辅助输出

例如,如果我 grep firefox 它不会显示它。

ps aux | rg firefox给了我这个: ps aux 与 rg

编辑:这似乎是因为这里描述了某种别名https://unix.stackexchange.com/a/500727/375504

这有效:ps aux | \grep firefox

答案1

你说当你使用ps aux | grep 'process name' 它 ( grep) 忽略我试图通过管道输入 grep 的内容并搜索当前工作目录

你还写道grep 的别名是grep -nRi

grep当您查看( man grep)的文档时,您会发现该-R标志的作用与您所描述的完全一样:

-r,--recursive递归地读取每个目录下的所有文件,仅当符号链接位于命令行时才遵循它们。 [...]

-R--dereference-recursive递归读取每个目录下的所有文件。遵循所有符号链接,与-r

对于 GNU grep,grep -r如果未给出文件名参数,默认情况下也会从当前目录开始。 grep 的某些其他版本不会这样做,但可能会在仍在读取 stdin 的同时警告“stdin 的递归搜索”。

解决方案是不要使用grep其他名称的别名。如果您需要特定功能,请创建一个新别名(rgrep例如,可以是此处的替代方案)。

答案2

我的问题是我在 bash 别名中添加了grep别名。grep -nRi $*删除别名或调用\grep可以解决该问题。

相关内容