mac - see bash profile
Pasando argumento a alias en bash (6)
En csh (a diferencia de bash ) puedes hacer exactamente lo que quieras.
alias print ''lpr /!^ -Pps5''
print memo.txt
La notación /!^
Hace que el argumento se inserte en el comando en este punto.
El !
el carácter está precedido por un /
para evitar que se interprete como un comando de historial.
También puedes pasar múltiples argumentos:
alias print ''lpr /!* -Pps5''
print part1.ps glossary.ps figure.ps
(Ejemplos tomados de http://unixhelp.ed.ac.uk/shell/alias_csh2.1.html .)
Esta pregunta ya tiene una respuesta aquí:
- Haga un alias de Bash que tome un parámetro? 12 respuestas
¿Es posible hacer lo siguiente?
Quiero ejecutar lo siguiente:
mongodb bin/mongod
En mi bash_profile tengo
alias = "./path/to/mongodb/$1"
Esta es la solución que puede evitar el uso de la función:
alias addone=''{ num=$(cat -); echo "input: $num"; echo "result:$(($num+1))"; }<<<''
resultado de la prueba
addone 200
input: 200
result:201
Para simplificar la respuesta de leed25d, use una combinación de un alias y una función. Por ejemplo:
function __GetIt {
cp ./path/to/stuff/$* .
}
alias GetIt=''__GetIt''
Por lo general, cuando quiero pasar argumentos a un alias en Bash, utilizo una combinación de un alias y una función como esta, por ejemplo:
function __t2d {
if [ "$1x" != ''x'' ]; then
date -d "@$1"
fi
}
alias t2d=''__t2d''
Un alias se expandirá a la cadena que representa. Cualquier cosa posterior al alias aparecerá después de su expansión sin necesidad de ser aprobado o aprobado como argumentos explícitos (por ejemplo, $1
).
$ alias foo=''/path/to/bar''
$ foo some args
se expandirá a
$ /path/to/bar some args
Si desea usar argumentos explícitos, necesitará usar una función
$ foo () { /path/to/bar "$@" fixed args; }
$ foo abc 123
será ejecutado como si hubieras hecho
$ /path/to/bar abc 123 fixed args
Para indefinir un alias:
unalias foo
Para definir una función por defecto:
unset -f foo
Para ver el tipo y la definición (para cada alias definido, palabra clave, función, archivo incorporado o ejecutable):
type -a foo
O escriba solo (para la ocurrencia de precedencia más alta):
type -t foo
para usar parámetros en alias, uso este método:
alias myalias=''function __myalias() { echo "Hello $*"; unset -f __myalias; }; __myalias''
es una función autodestructiva envuelta en un alias, por lo que es lo mejor de ambos mundos, y no toma una línea adicional en tus definiciones ... lo cual odio, oh sí, y si necesitas ese retorno valor, tendrá que almacenarlo antes de llamar a unset, y luego devolver el valor usando la palabra clave "return" en esa función autodestructiva allí:
alias myalias=''function __myalias() { echo "Hello $*"; myresult=$?; unset -f __myalias; return $myresult; }; __myalias''
asi que..
podrías, si necesitas tener esa variable allí
alias mongodb=''function __mongodb() { ./path/to/mongodb/$1; unset -f __mongodb; }; __mongodb''
por supuesto...
alias mongodb=''./path/to/mongodb/''
en realidad haría lo mismo sin la necesidad de parámetros, pero como dije, si los necesita o los necesita por algún motivo (por ejemplo, necesita $ 2 en lugar de $ 1), necesitará usar un contenedor como ese. Si es más grande que una línea, podría considerar simplemente escribir una función directamente ya que se volvería más desagradable a medida que creciera. Las funciones son excelentes ya que obtienes todos los beneficios que brindan las funciones (ver finalización, trampas, vinculación, etc., para ver los beneficios que las funciones pueden proporcionar, en la página de manual de bash).
Espero que eso te ayude :)