2016-03-15 34 views
1

我試圖創建一個alias,它將列出按進程名排序的所有進程。Linux:創建別名以列出按進程名排序的particual進程

因此,如果我編寫myps processname,它應該返回所有按進程名稱排序的進程名稱,不包括grep命令結果本身。

這兩項工作正常

alias myps='ps aux|grep $1' 

或只是

alias myps='ps aux|grep ' 

但我不能夠低於

alias myps='ps aux|grep $1|grep -v grep|sort -k12' 

據我所知,在創建別名使用它像,通過變量添加在命令的最後。 限制是我不能更改.env.profile文件,我無法在我的unix盒子上創建新的shell腳本。

有人可以提出任何方式來實現別名或什麼?

+0

您需要創建一個[函數](http://tldp.org/HOWTO/Bash-Prog-Intro- HOWTO-8.html),而不是別名。 –

+0

您可能還想閱讀[「使bash別名參數?」](http://stackoverflow.com/questions/7131670/make-bash-alias-that-takes-parameter)。 –

回答

1

一個別名只是擴展到它表示的字符串,它並不真正接受任何參數。另一方面,函數似乎正是你正在尋找的東西:

[email protected] /tmp $ myps() { ps aux|grep $1|grep -v grep|sort -k12; } 
[email protected] /tmp $ myps bash 
mureinik 10020 0.0 0.0 122552 6344 pts/2 Ss+ Mar13 0:00 bash 
mureinik 11987 0.0 0.0 124068 6588 pts/3 Ss 09:17 0:00 bash 
mureinik 6541 0.0 0.0 122716 6660 pts/0 Ss+ Mar13 0:01 bash 
mureinik 7609 0.0 0.0 122592 6420 pts/1 Ss+ Mar13 0:00 bash 
+0

謝謝。讓我試試這個 – Utsav

+0

'grep -v grep'可以通過'grep「[$ {1:0:1}] $ {1:1}''來避免,它也修正了[引用](http:/ /stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-variable)錯誤。不過,子串設施是Bash擴展。 – tripleee