2012-07-13 16 views
26

Normalerweise verwende ich ps -elf | grep proceesname, um eine detaillierte Beschreibung des Prozesses namens processname zu erhalten. Ich denke, dass ich dafür zu viel schreiben muss.Wie Bash Alias ​​mit Argument erstellen?

Nun, was ich denke einen Bash-Alias ​​erstellen wie

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

, die die obige detaillierte Beschreibung nur mit lsps processname geben.

Also, meine Frage ist, wie ich einen Bash-Alias ​​erstellen, der ein Argument akzeptiert.

PS: Ich weiß, ich kann ein Shell-Skript für die oben genannte Aufgabe schreiben, aber ich habe mich nur gefragt, wie man es mit Bash Alias ​​macht.

+0

Aliase einfach nicht Argumente zu nehmen. – chepner

+0

Für GNU 'ps' ist es wahrscheinlich besser zu sagen' lsps() {ps -lf -C "$ 1"; } '. – Sorpigal

Antwort

43

sehr einfach;

alias lsps='ps -elf | grep' 

Kommandozeilenargumente werden automatisch zum Ende des Alias ​​hinzugefügt werden:

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

Das funktioniert nur, wenn Sie Argumente an das Ende Alias ​​hinzufügen möchten.

Wenn Sie Argumente des Alias ​​innerhalb des erweiterten Befehlszeile erhalten möchten Sie Funktionen verwenden müssen:

Zum Beispiel:

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

Funktionen sowie Aliase können in Ihrer ~/.bashrc Datei gespeichert werden) oder eine Datei, die davon enthalten ist):

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

$ . /tmp/.bash_aliases 
$ 
+0

Danke, es hat funktioniert. Was aber, wenn ich streiten müsste? – RanRag

+2

Verwenden Sie einfach Funktionen in diesem Fall –

+0

Das ist seltsam. Möglicherweise haben Sie nach dem Funktionsnamen (in seiner Definition) zusätzliche Leerzeichen hinzugefügt. Ich habe meiner Antwort ein Anwendungsbeispiel hinzugefügt, da Sie sehen können, dass alle Arbeiten perfekt sind. –

5

verwenden:

alias lsps='ps -elf | grep' 

Dann können Sie dieses Problem:

lsps processname 
Verwandte Themen