4 votos

¿Cómo crear un alias que tome un argumento posicional en Linux bash?

Digamos que tengo un comando de bash con un par de opciones y la variable que me interesa (por ejemplo, el nombre de archivo):

my_cmd option1 option2 filename

He creado un alias:

alias my_cmd_12="my_cmd option1 option2"

esto me permite eliminar la tipificación de todas las opciones. Sin embargo, hay algunos indicadores que viene después de la variable estoy interesado (por ejemplo, el nombre de archivo):

my_cmd option1 option2 filename --flag1

¿Cómo puedo crear un alias que se lleva toda opción de banderas:

my_alias filename es equivalente a

my_cmd option1 option2 filename --flag1

11voto

Kamil Maciorowski Puntos 897

Usted no puede hacer esto con alias. Alias obras de sustitución de cadena con otra cadena. Con este alias definido

alias my_cmd_12="my_cmd option1 option2"

my_cmd_12 filename --flag1 expandirá a

my_cmd option1 option2 filename --flag1

Pero desea invocar my_alias filename de obtener el mismo resultado. No hay manera de reemplazar my_alias con otra cadena, por lo --flag1 aparece al final.

Sin embargo, una función debe trabajar:

my_function() { my_cmd option1 option2 "$1" --flag1; }

Nota: esto es sólo una mínima solución a la medida de su ejemplo. En general, usted puede utilizar más los parámetros de posición o "$@", sentencias condicionales, etc., de acuerdo con lo que exactamente lo que necesita. Las funciones son la manera más flexible de los alias.

Más información aquí: En Bash, cuando a alias, cuando el guión, y cuando para escribir una función?

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: