我在.bashrc
:
alias jpsdir="jps | awk '{print $1}' | xargs pwdx"
但是当我使用jpsdir
时,我得到了这个输出:
pwdx: invalid process id: JvmName
但正在运行
jps | awk '{print $1}' | xargs pwdx
给出了正确的结果:
1234: /some/dir/
我的别名有什么问题?我应该把它变成一个功能吗?
答案 0 :(得分:4)
正如gniourf_gniourf在评论中解释的那样,你的别名不起作用的原因是因为你的awk命令中的$1
被shell扩展了。该值可能为空,因此awk命令变为{print }
,pwdx
正在传递jps
输出的两个部分。
您可以避免因完全避免使用awk而逃离$
;你可以使用-q
开关而不是管道到awk:
jpsdir() {
jps -q | xargs pwdx
}
我个人更喜欢使用函数,但如果愿意,可以使用别名。