¿Un alias afecta a otro alias?

14

Todavía no tengo muchos alias configurados en mi archivo .bash_aliases. Solo recientemente descubrí lo útiles que pueden ser.

Puedo verme bastante enganchado a los alias, así que antes de que el archivo se vuelva demasiado difícil de manejar, me gustaría aclarar algo haciendo una pregunta muy simple. ¿Un alias afecta a otro, o el alias siempre vuelve al comando original?

Un ejemplo puede aclarar esto:

Me he lsalias ls -lF. Digamos que me gustaría también alias dde ls -l | grep -E "^d": no dutiliza ahora ls -lFen lugar de ls? Si es así, ¿es una cuestión de orden en el archivo de configuración .bash_aliases?

man alias no me iluminó

boehj
fuente

Respuestas:

20

De Alias ​​(sección 6.6 del Manual Bash) :

La primera palabra de cada comando simple, si no se cita, se verifica para ver si tiene un alias. Si es así, esa palabra se reemplaza por el texto del alias.

Esto sucede cuando usa el alias, no cuando lo define. Aquí hay un ejemplo:

$ alias a1='a2 hello'
$ alias a2='echo'
$ a1
hello
$ unalias a2
$ a1
bash: a2: command not found
cjm
fuente
1
Muy bien, gracias por ese ejemplo (y también por el enlace al Manual Bash). Cito del Manual: "Las reglas relativas a la definición y el uso de alias son algo confusas ... Para casi cualquier propósito, las funciones de shell son preferibles a los alias". Supongo que mejor aprenderé cómo hacer funciones de shell entonces. :)
boehj
1
Si. Los alias pueden ahorrarle algo de tipeo para comandos comunes, pero para cualquier cosa, incluso remotamente compleja, escribir funciones personalizadas para manejarla suele ser una mejor opción.
Caleb
@Caleb @Gilles - Gracias amigos. Por cierto, ls = 'ls --color' puedo ver que es muy útil. Me encanta este sitio. :)
boehj
2
@boehj: Una regla general es usar un alias cuando desee tener argumentos automáticos para un comando, usando el nombre del comando o una variación menor, y funciona de otra manera. Entonces alias ls='ls --color', alias cp='cp -i'pero funciona para cosas más complejas. En particular, haría su dfunción para que pueda pasar argumentos a ls. [comentario publicado para arreglar un cerebro confuso, gracias @cjm]
Gilles 'SO- deja de ser malvado'
@Gilles - OK, mi tarea para hoy es enseñarme a mí mismo cómo replicar dcomo una función de shell.
boehj