使用 ps aux | 输出 Rails 服务器的 PID grep - 放入别名时会中断?

使用 ps aux | 输出 Rails 服务器的 PID grep - 放入别名时会中断?

我正在尝试为一个笨重的命令创建一个别名,我用它来输出 PID 以及有关我运行的两个 Rails 服务器的其他一些信息。

当我简单地在终端中运行命令(通过 ssh)时:

vagrant@Railsvr:~$ ps aux | grep rails | grep -v grep | awk '{print $2, $12, $13, $14, $15}' 

我得到了想要的信息:

3266 bin/rails server -dp 3000
3383 bin/rails s -dp 4000

但是当我将它放入 ~/.bash_aliases 中的别名(包含在 ~/.bashrc 中)

alias findrails_pid="ps aux | grep rails | grep -v grep | awk '{print $2, $12, $13, $14, $15}'"

和来源:

. ~/.bashrc

它打破了......我得到:

vagrant@Railsvr:~$ findrails_pid 
awk: {print , 2, 3, 4, 5}
awk:        ^ syntax error

就好像 $n(代表 ps aux 命令中的列)由于某种原因被删除了。这是我尝试创建的第一个别名 - 我错过了什么吗?

不确定这是否重要 - 系统是 Debian 8.1 主机上由 libvirt-kvm 托管的 ubuntu precision32 guest box。

答案1

是的,函数可能会更好,但在这种情况下,问题可能是因为您在它周围使用了双引号。 $ 变量在分配给别名之前被扩展。您可以在外部使用单引号,或者,因为您已经有单引号,所以用 \ 转义 $:

别名 findrails_pid="ps aux | greprails | grep -v grep | awk '{print \$2, \$12, \$13, \$14, \$15}'"

相关内容