¿Es posible recuperar los comandos reales escritos en un historial de bash? Si el comando involucró (por ejemplo) una sustitución o modificador del historial, lo que se ve en el historial es el comando resultante en lugar del comando escrito.
Un par de ejemplos Para ambos, suponga que el comando 123 en la historia esls Red*
Si escribo
!123
para usar la línea de comando 123 del historial, y ahora miro el último comando en mi historial, veré enls Red*
lugar de hacerlo!123
.Si utilizo el comando de shell incorporado
fc -s Red=Blue 123
y miro el historial, veré enls Blue*
lugar defc -s Red=Blue 123
De manera similar, si uso la flecha hacia arriba (produciendo la secuencia de escape ^[[A
) obtengo el comando expandido en lugar del texto escrito real.
En todos estos ejemplos, la entrada resultante en el historial es lo que espero, pero en algunos casos sería útil recuperar el texto escrito originalmente. Por ejemplo, si bien los ejemplos anteriores son bastante simples, podría estar usando una sustitución compleja que quiero editar.
Me doy cuenta de que esto sería aún más complicado después de que el shell se inicialice, ya HISTFILE
que no contiene esta información. No me preocupa recuperar el texto original en este caso (aunque es interesante).
ls Red*
,ls Blue*
y!-2
- y luego copiar el!-2
y pegarlo en repetidas ocasiones. También es posible que desee ver un programa llamado "pantalla".