see mac home etc bash_profile bash shell .bash-profile

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í:

¿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 :)