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

tas*_*IDR 1 grep bash process

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

当我只是在终端(通过 ssh)运行命令时:

vagrant@Railsvr:~$ ps aux | grep rails | grep -v grep | awk '{print $2, $12, $13, $14, $15}' 
Run Code Online (Sandbox Code Playgroud)

我得到所需的信息:

3266 bin/rails server -dp 3000
3383 bin/rails s -dp 4000
Run Code Online (Sandbox Code Playgroud)

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

alias findrails_pid="ps aux | grep rails | grep -v grep | awk '{print $2, $12, $13, $14, $15}'"
Run Code Online (Sandbox Code Playgroud)

和来源:

. ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

它打破了......我明白了:

vagrant@Railsvr:~$ findrails_pid 
awk: {print , 2, 3, 4, 5}
awk:        ^ syntax error
Run Code Online (Sandbox Code Playgroud)

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

不确定这是否重要 - 系统是一个由 libvirt-kvm 在 Debian 8.1 主机上托管的 ubuntu precision32 来宾盒。

lsd*_*lsd 5

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

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