
Sé que enumerar todos los alias en una sesión de bash determinada con alias -p
. ¿Hay alguna manera de obtener una lista de todos los alias temporales en una sesión de bash determinada, es decir, todos los alias que no están en mi perfil de bash?
¡Gracias!
Respuesta1
No es tan simple. No existe el concepto de alias "temporales" en bash, y para bash, cualquier comando ejecutado mediante sourcing .bashrc es el mismo que cualquiera que escriba en la línea de comando. Además, los archivos de perfil de bash podrían definir algunos alias sólo en algunas circunstancias.
Puede guardar en una variable (o archivo) los alias que se establecen después de ejecutar los archivos de perfil de bash y luego, cuando lo necesite, verificar la diferencia entre dicha variable y los alias actualmente configurados:
$ BASE_ALIAS="$(alias | sort)"
$ alias tmp_alias=""
$ unalias ls
$ diff <( echo "$BASE_ALIAS" ) <( alias | sort )
3d2
< alias ls='ls --color=auto'
5a5
> alias tmp_alias=''
diff
muestra que ls
se ha eliminado un alias y tmp_alias
se ha agregado un alias desde la declaración de BASE_ALIAS
.
Respuesta2
Podrías hacer esto con lo siguiente:
comm -2 -3 --nocheck-order <(alias -p) <(bash -l -c 'alias -p')
Esto funciona comparando la lista actual de alias con los alias presentes en un shell nuevo.
La comm
utilidad se utiliza para mostrar sólo las líneas que están presentes en el primer comando <(alias -p)
. Es --nocheck-order
necesario para evitar que se queje de que la lista de alias no está en orden, aunque realmente lo esté...