2012-07-13 92 views
26

我通常使用ps -elf | grep proceesname來獲得名爲processname的過程的詳細說明。我認爲我必須爲此寫太多內容。如何用參數創建bash別名?

現在我當時的想法是創造像

alias lsps='ps -elf | grep $1' 

一個bash別名將只用lsps processname給上面的詳細說明。

所以,我的問題是如何創建一個接受參數的bash別名。 PS:我知道我可以爲上述任務編寫一個shell腳本,但我只是想知道如何用bash別名來完成。

+0

別名根本不帶參數。 – chepner 2012-07-13 12:34:26

+0

對於GNU'ps',最好說'lsps(){ps -lf -C「$ 1」; }'。 – Sorpigal 2012-07-13 14:39:45

回答

43

很簡單;

alias lsps='ps -elf | grep' 

命令行參數將被自動添加到別名的結尾:

lsps arg1 arg2 arg3 => converted to => ps -elf | grep arg1 arg2 arg3 

,只有當你想將參數添加到別名工作的結局。

如果你想讓你必須使用功能擴展的命令行內的別名的參數:

例如:

lsps() 
{ 
    ps -elf | grep "$1" | grep -v grep 
} 

功能以及別名可以保存在您的~/.bashrc文件)或包含它的文件):

$ cat /tmp/.bash_aliases 
lsps() 
{ 
    ps -elf | grep "$1" | grep -v grep 
} 

$ . /tmp/.bash_aliases 
$ 
+0

感謝它的工作。但是如果我不得不提出一個論點。 – RanRag 2012-07-13 08:05:32

+2

只是在這種情況下使用功能 – 2012-07-13 08:08:11

+0

這很奇怪。也許你已經在函數名後面添加了額外的空格(在它的定義中)。我在我的答案中添加了使用示例,因爲您可以看到所有作品都很完美。 – 2012-07-13 08:12:36

5

使用此:

alias lsps='ps -elf | grep' 

然後你就可以發出這樣的:

lsps processname