ps aux grepを使用してRailsサーバーのPID出力 - エイリアスを入力すると中断されますか?

ps aux grepを使用してRailsサーバーのPID出力 - エイリアスを入力すると中断されますか?

私は、PIDと私が実行している2つの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ゲストボックスです。

ベストアンサー1

はい、関数の方が良いかもしれませんが、この場合は二重引用符を使用しているため問題になる可能性があります。 $変数は、エイリアスに割り当てられる前に拡張されます。外部で一重引用符を使用できます。または、すでに一重引用符があるので、$を\でエスケープすることもできます。

エイリアスfindrails_pid="ps aux | greprails | grep -v grep | awk '{print \$2, \$12, \$13, \$14, \$15}'"

おすすめ記事