Articles

Cómo usar alias en comandos de shell de Linux

Este artículo está reimpreso del libro A Practical Guide to Linux Commands, Editors, and Shell Programming 3rd edition, con permiso del autor y editor Prentice Hall, todos los derechos reservados.

Un alias es un nombre (generalmente corto) que el shell traduce en otro nombre o comando (generalmente más largo). Los alias le permiten definir nuevos comandos sustituyendo una cadena por la primera señal de un comando simple. Normalmente se colocan en ~/.bashrc (bash) o ~/.,archivos de inicio tcshrc (tcsh) para que estén disponibles para subcells interactivas.

en bash la sintaxis de los alias builtin es

alias ]

Bajo el tcsh la sintaxis es

alias ]

En la sintaxis de bash no se permiten espacios alrededor del signo igual. Si el valor contiene espacios o tabulaciones, debe encerrar el valor entre comillas. A diferencia de los alias bajo tcsh, un alias bash no acepta un argumento de la línea de comandos en value., Use una función bash cuando necesite usar un argumento.

Un alias no sustituye a sí mismo, lo que evita la posibilidad de recursividad infinita en el manejo de un alias como el siguiente:

alias ls='ls -F'

Se pueden anidar alias. Los alias están deshabilitados para shells no interactivos (es decir, scripts de shell). Utilice elunalias incorporado para eliminar un alias., Cuando se da un comandoalias builtin sin ningún argumento, el shell muestra una lista de todos los alias definidos:

$ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i'

para ver el alias de un nombre en particular, introduzca el alias del comando seguido del nombre del alias. La mayoría de las distribuciones de Linux definen al menos algunos alias. Introduzca un comando alias para ver qué alias están en vigor. Puede eliminar los alias que no desee del archivo de inicio correspondiente.,

comillas simples o dobles en Alias

la elección de comillas simples o dobles es significativa en la sintaxis de alias cuando el alias incluye variables. Si encierra valor entre comillas dobles, las variables que aparecen en valor se expanden cuando se crea el alias. Si encierra un valor entre comillas simples, las variables no se expanden hasta que se utiliza el alias. El siguiente ejemplo ilustra la diferencia.

la variable de palabra clave PWD contiene el nombre de Ruta del directorio de trabajo., Max crea dos alias mientras trabaja en su directorio personal. Debido a que usa comillas dobles cuando crea el alias dirA, el shell sustituye el valor del directorio de trabajo cuando crea este alias. El comando alias dirA muestra el alias dirA y muestra que la sustitución ya ha tenido lugar:

 $ echo $PWD /home/max $ alias dirA="echo Working directory is $PWD" $ alias dirA alias dirA='echo Working directory is /home/max' 

Cuando Max crea el alias dirB, usa comillas simples, que evitan que el shell expanda la variable PW PWD., El comando alias dirB muestra que el alias dirB todavía contiene la variable unexp PWD sin dilatar:

 $ alias dirB='echo Working directory is $PWD' $ alias dirB alias dirB='echo Working directory is $PWD'

después de crear los alias dirA y dirB, Max usa cd para hacer de cars su directorio de trabajo y da cada uno de los alias como un comando. El alias que creó usando comillas dobles muestra el nombre del directorio en el que creó el alias como el directorio de trabajo (lo cual es incorrecto)., Por el contrario, el alias dirB muestra el nombre propio del directorio de trabajo:

 $ cd cars $ dirA Working directory is /home/max $ dirB Working directory is /home/max/cars

consejo: cómo evitar que el shell invoque un alias

el shell comprueba solo comandos simples sin comillas para ver si son alias. Los comandos dados como nombres de ruta relativos o absolutos y los comandos entrecomillados no se comprueban. Cuando quiera dar un comando que tenga un alias pero no quiera usar el alias, preceda el comando con una barra invertida, especifique la ruta absoluta del comando, o dé el comando como ./command.,

Ejemplos de alias

en El siguiente alias le permite escribir r para repetir el comando anterior o r abc para repetir el último comando de la línea que comenzó con abc:

$ alias r='fc -s'

Si utiliza el comando ls -ltr con frecuencia, puede crear un alias que sustituye ls -ltr cuando se le da el comando l:

Otro uso común de los alias es para protegerse de los errores., El siguiente ejemplo sustituye la versión interactiva de la utilidad rm cuando ingresa el comando zap:

$ alias zap='rm -i' $ zap f* rm: remove 'fixtax.icn'? n rm: remove 'flute.ps'? n rm: remove 'floor'? n

la opción-I hace que rm le pida que verifique cada archivo que ser eliminado, lo que le ayuda a evitar eliminar el archivo incorrecto. También puede alias rm rm -i comandos: alias rm='rm ‒i'.,

El alias en el siguiente ejemplo, a causa de la shell para sustituir ls -l cada vez que usted da un ll comando y ls ‒F cada vez que usted use ls.La opción-F hace que ls imprima una barra diagonal (/) al final de los nombres de directorio y un asterisco (*) al final de los nombres de los archivos ejecutables.,

En este ejemplo, la cadena que reemplaza el alias ll (ls ‒l), sí contiene un alias (ls). Cuando reemplaza un alias con su valor, el shell mira la primera palabra de la cadena de reemplazo para ver si es un alias. En el ejemplo anterior, la cadena de reemplazo contiene el alias ls, por lo que se produce una segunda sustitución para producir el comando final ls ‒F ‒l., (Para evitar una caída recursiva, el ls en el texto de reemplazo, aunque es un alias, no se expande por segunda vez.)

Cuando se le da una lista de alias sin el campo =value o value, el alias builtin muestra el valor de cada alias definido., El builtin alias informa de un error si no se ha definido un alias:

$ alias ll l ls zap wx alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i' bash: alias: wx: not found

puede evitar la sustitución de alias precediendo el comando aliased con una barra invertida (\):

$ \ls Test_Emacs XTerm.ad flute.ps maptax.icn Tiger fixtax.icn floor testdir

debido a que la sustitución de un nombre de alias por el valor de alias no cambia el resto de la línea de comandos, cualquier argumento sigue siendo recibido por el comando que se ejecuta:

$ ll f* -rw-r--r--. 1 max pubs 641 04-01 08:12 fixtax.icn -rw-r--r--. 1 max pubs 30015 03-01 14:24 flute.ps -rwxr-xr-x. 1 max pubs 485 09-21 08:03 floor*

puede eliminar un alias utilizando el unalias builtin., Cuando se elimina el alias zap, ya no se muestra por el alias builtin, y su uso posterior resulta en un mensaje de error:

$ unalias zap $ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' $ zap maptax.icn bash: zap: command not found