2012-07-13 12 views
26

Normalmente uso ps -elf | grep proceesname para obtener una descripción detallada del proceso llamado processname. Creo que tengo que escribir demasiado para esto.¿Cómo crear bash alias con argumento?

Ahora lo que estaba pensando es crear un alias de fiesta como

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

que dará a la descripción detallada anterior sólo mediante el uso de lsps processname.

Entonces, mi pregunta es cómo puedo crear un alias bash que acepte un argumento.

PD: Sé que puedo escribir un script de shell para la tarea anterior pero me preguntaba cómo hacerlo con bash alias.

+0

Los alias simplemente no aceptan argumentos. – chepner

+0

Para GNU 'ps', probablemente sea mejor decir' lsps() {ps -lf -C "$ 1"; } ' – Sorpigal

Respuesta

43

muy sencilla;

alias lsps='ps -elf | grep' 

argumentos de línea de comandos se añadirán automáticamente al final del alias:

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

que funciona sólo cuando se desea añadir argumentos a finales de alias.

Si desea obtener argumentos de alias dentro de la línea de comandos ampliado debe utilizar funciones:

Por ejemplo:

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

funciones, así como los alias se pueden guardar en el archivo de ~/.bashrc) o un archivo que está incluido en él):

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

$ . /tmp/.bash_aliases 
$ 
+0

Gracias funcionó. Pero, ¿y si tuviera que dar una discusión? – RanRag

+2

Solo use funciones en ese caso –

+0

Eso es extraño. Puede ser que haya agregado espacios adicionales después del nombre de la función (en su definición). Agregué un ejemplo de uso a mi respuesta, ya que puedes ver que todo funciona perfecto. –

5

Utilice esta:

alias lsps='ps -elf | grep' 

A continuación, puede emitir la siguiente:

lsps processname 
Cuestiones relacionadas