1 votos

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

Hoy he aprendido un truco muy práctico:

man [algún comando] -t | open -f -a Preview

Me gustaría crear un alias en mi archivo .bash_profile como un acceso directo. Para que esto funcione, necesito pasar un argumento al comando alias. Un poco de investigación y llegué a esto:

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

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

12voto

No se pueden pasar argumentos a los alias. Los alias son sólo sustituciones de texto sin más lógica.

Pero puedes utilizar funciones del shell para conseguir 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í sólo para asegurarse de que también funciona en sistemas que no son OSX.

Para definir una función, basta con incluir la definición de arriba en su ~/.bash_profile . Su uso es idéntico al de los alias o cualquier otro comando: pman ls .

Como señaló @stuffe en un comentario, mantener los alias/funciones en un archivo separado tiene sus ventajas (especialmente permite releer los alias/funciones en el shell actual sin ejecutar ninguna cosa de configuración desde .bashrc o .bash_profile ). Para ello, cree un archivo separado llamado .alias , .functions o similar y añadir

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

a .bashrc o .bash_profile .

0voto

Tom van Ommen Puntos 43

Me gusta la solución de @patrix, pero quería poner otro ejemplo, sacado de mi OSX .bash_profile que en este caso es configurar TextWrangler para que abra 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 :-)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X