Mostrar text de reemploop de alias en el file .bash_history

Dado que tengo el siguiente alias en uno de mis files de initialization bash (.bash_profile etc.):

alias gs='git status' 

¿Cómo puedo get mi file .bash_history para mostrar el text de reemploop: 'estado de git' en lugar del alias: 'gs'?

No creo que esto sea (fácilmente) posible.

Intenté esto:

 alias foo="echo foo;fc -e /home/hl/tmp/testscript.sh 0" start cmd:> cat /home/hl/tmp/testscript.sh #! /bin/bash set -x # simple case #test -f "$1" || exit 1 #echo ": alias replacement : echo foo" >"$1" # complex case IFS= read -r line <"$1" : line: _"$line"_ case "$line" in foo) echo ": alias replacement : echo foo" >"$1" ;; bar) echo ": alias replacement : echo bar" >"$1" ;; *) echo ": alias replacement error" >"$1" ;; esac 

La idea era: ejecutar el command real e inmediatamente después corregir el historial de commands, lo que se puede hacer con bash builtin fc . Hay dos problemas:

  1. fc permite editar el file pero luego lo ejecuta. Esto se puede resolver parcialmente escribiendo un command ficticio (por ejemplo, anteponer:).

  2. El historial se basa en líneas no en commands ejecutados. Por lo tanto, el command que se va a modificar ni siquiera está en la stack. Esto podría ser abordado por algún truco del mal como poner el código en $PS1 pero no tengo ganas de intentar …

historia integrada

Puede haber una mejor manera de compartir el problema "todavía no en la stack" con el enfoque anterior. No estaba al tanto de la history interna. Este command permite escribir y leer el file de historial. Por lo tanto, esto podría hacerse:

  1. escribe el file
  2. modificar el file con, por ejemplo, sed : sed -i 's/^gs$/git status/' ~/.bash_history
  3. lee el file

El problema de la stack de historial se puede abordar de esta manera (aunque no lo intenté):

 alias foo="echo foo;(sleep 1; history ...) &"