Listar sólo alias temporales en bash

Listar sólo alias temporales en bash

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=''

diffmuestra que lsse ha eliminado un alias y tmp_aliasse 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 commutilidad se utiliza para mostrar sólo las líneas que están presentes en el primer comando <(alias -p). Es --nocheck-ordernecesario para evitar que se queje de que la lista de alias no está en orden, aunque realmente lo esté...

información relacionada