¿Cómo uso los argumentos junto con los alias de bash?

3

Hoy aprendí el truco muy útil:

  

hombre [alguna orden] -t | abrir -f -a Vista previa

Me gustaría crear un alias en mi archivo .bash_profile como acceso directo. Para que esto funcione, necesito pasar un argumento al comando con alias. Un poco asomando y se me ocurrió esto:

  

alias manp="man $ 1 -t | open -f -a Preview"

Esto casi funciona, pero si escribo, di "manp ls", parece que se espera que la página de manual de ls esté en el directorio actual.

    
pregunta Adam Rice 05.11.2011 - 23:49

2 respuestas

11

No puedes pasar argumentos a los alias. Los alias son solo sustituciones de texto sin lógica adicional.

Pero puedes usar funciones de shell para lograr el mismo resultado:

function pman() {
    if [ -x /usr/bin/open ]; then
        man -t "$1" | open -f -a Preview
    else
        man "$1"
    fi
}

La parte if-then-else está ahí solo para asegurarse de que también funcione en sistemas que no sean OSX.

Para definir una función, solo incluye la definición de arriba en tu ~/.bash_profile . El uso es idéntico a los alias o cualquier otro comando: pman ls .

Como @stuffe señaló en un comentario, mantener alias / funciones en un archivo separado tiene sus ventajas (especialmente le permite volver a leer sus alias / funciones en el shell actual sin ejecutar ningún elemento de configuración desde .bashrc o% código%). Para hacer esto, cree un archivo separado llamado .bash_profile , .alias o similar y agregue

test -e ~/.alias && . ~/.alias

a .functions o .bashrc .

    
respondido por el nohillside 06.11.2011 - 11:07
0

Me gusta la solución de @ patrix, pero solo quería dar otro ejemplo, cortado del archivo .bash_profile de mi OSX, que en este caso está configurando TextWrangler para abrir un archivo que paso como parámetro:

function tw() { /usr/bin/open -a /Applications/TextWrangler.app "$1" ;}

Quería poder editar más fácilmente mi .bash_profile :-)

    
respondido por el Phil Ryan 03.07.2014 - 10:55

Lea otras preguntas en las etiquetas