PS 辅助 |grep 在.bash_history文件中搜索



我有 Debian8 (Jessie) 在我的 mcahine 上运行。

我跑

$ ps aux | grep '[c]13dc8623fe6abc'

我得到以下结果

.bash_history:java -jar slave.jar -jnlpUrl http://tomcat-server:8080/slave-agent.jnlp -s c13dc8623fe6abc
.bash_history:java -jar slave.jar -jnlpUrl http://tomcat-server:8080/slave-agent.jnlp -s c13dc8623fe6abc   
Script/build.sh:java -jar slave.jar -jnlpUrl http://tomcat-server:8080/slave-agent.jnlp -s c13dc8623fe6abc

返回的结果是来自我系统上的 bash 脚本文件的搜索结果。这根本不是我所期望的。我希望它能够 grep/搜索ps aux的输出.

为什么我的系统中会发生这种奇怪的行为。?

根据下面的建议,我做了以下工作

$ type ps

输出

::6+type ps
ps is /bin/ps
$ type grep

输出

::7+type grep
grep is aliased to `grep --color=auto -I -r --exclude=*.{c.svn-base,o,.py,so*,a}'

设置后

$ PS4=':$BASH_SOURCE:$LINENO+'
$ set -x

之后如果我这样做

$ ps aux | grep '[c]13dc8623fe6abc'

我得到以下输出。

::5+grep --color=auto -I -r '--exclude=*.c.svn-base' '--exclude=*.o' '--exclude=*..py' '--exclude=*.so*' '--exclude=*.a' '[c]13dc8623fe6abc'
::5+ps aux
.bash_history:java -jar slave.jar -jnlpUrl http://tomcat-server:8080/slave-agent.jnlp -s c13dc8623fe6abc
.bash_history:java -jar slave.jar -jnlpUrl http://tomcat-server:8080/slave-agent.jnlp -s c13dc8623fe6abc   
 Script/build.sh:java -jar slave.jar -jnlpUrl http://tomcat-server:8080/slave-agent.jnlp -s c13dc8623fe6abc
正如我们

在评论中确定的那样,在启用set -x的情况下运行它表明别名为您的grep调用增加了一堆额外的复杂性。

为了使它尽可能健壮,让我们既防止别名执行(通过使用command内置),又明确指定您的 grep 应该搜索 stdin(通过将 - 作为文件名传递,并使用 -e 标记后面的十六进制字符串明确表示要搜索的目标):

ps aux | command grep -e '[c]13dc8623fe6abc' -

相关内容

  • 没有找到相关文章

最新更新