2012-07-13 15 views
26

Zazwyczaj używam ps -elf | grep proceesname, aby uzyskać szczegółowy opis procesu o nazwie processname. Myślę, że muszę napisać za dużo.Jak utworzyć alias bash z argumentem?

Teraz co myślałem jest stworzenie aliasu bash jak

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

które dadzą powyższy szczegółowy opis tylko za pomocą lsps processname.

Moje pytanie brzmi: jak utworzyć alias bash, który akceptuje argument.

PS: Wiem, że mogę napisać skrypt powłoki dla powyższego zadania, ale zastanawiałem się, jak to zrobić z aliasem basha.

+0

Aliasy po prostu nie biorą argumentów. – chepner

+0

Dla GNU 'ps' prawdopodobnie lepiej jest powiedzieć' lsps() {ps -lf -C "$ 1"; } '. – Sorpigal

Odpowiedz

43

Bardzo prosty;

alias lsps='ps -elf | grep' 

argumenty wiersza poleceń zostanie dodany automatycznie do końca alias:

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

To działa tylko wtedy, gdy chcesz dodać argumenty do końca aliasu.

Jeśli chcesz uzyskać argumenty alias wewnątrz rozszerzonej linii poleceń należy wykorzystać funkcje:

Na przykład:

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

funkcje oraz aliasy mogą być zapisane w pliku ~/.bashrc) lub plik, który jest z niego dołączony):

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

$ . /tmp/.bash_aliases 
$ 
+0

Dzięki temu zadziałało. Ale co, gdybym musiał dać argument. – RanRag

+2

Po prostu użyj funkcji w tym przypadku. –

+0

To dziwne. Być może dodano dodatkowe spacje po nazwie funkcji (w jej definicji). Dodałem przykład użycia do mojej odpowiedzi, ponieważ widać wszystkie prace są doskonałe. –

5

Użyj tego:

alias lsps='ps -elf | grep' 

Następnie można wydać w tym:

lsps processname 
Powiązane problemy