ps 辅助 | grep 在 .bash_history 文件中搜索
ps aux | grep searches in .bash_history file
我的机器上安装了 Debian8 (Jessie) 运行ning。
我运行
$ 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/search 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 应该搜索标准输入(通过传递 -
作为文件名,并使用 -e
将后面的十六进制字符串标记为明确表示要搜索的目标):
ps aux | command grep -e '[c]13dc8623fe6abc' -
我的机器上安装了 Debian8 (Jessie) 运行ning。
我运行
$ 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/search 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 应该搜索标准输入(通过传递 -
作为文件名,并使用 -e
将后面的十六进制字符串标记为明确表示要搜索的目标):
ps aux | command grep -e '[c]13dc8623fe6abc' -