En la Terminal puedo usar lo !!que hará referencia a mi comando anterior.
¿Es posible usar esto en un alias? Lo he intentado, pero lo que sucede es que los signos de exclamación dobles se interpretan literalmente.
Lo que quiero tener es posible:
- Entro algun comando
- Escribo un alias que incluirá lo que se ingresó en el paso 1
Si hay una solución usando scripts que también es aceptable.
command-line
bash
alias
Ludwig Magnusson
fuente
fuente

fccomando para que abra un editor de texto, porque esa es la forma más fácil de editar comandos largos. Déjame agregarlo a mi publicación. Además, ¿tal vez podría proporcionar un ejemplo de comando?Respuestas:
El comando que enumera el último comando ejecutado es
fc -nl -1. Usando la sustitución de salida, podemos agregar más parámetros al mismo contenidoCitar, sin embargo, puede ser un problema con este enfoque
Una característica muy agradable de esto
fces que si solo ejecuta elfccomando por sí mismo, abrirá el editor de texto especificado en laFCEDITvariable (que probablemente desee almacenar~/.bashrc) y el contenido de la línea será su último comando. Para su comodidad, le sugiero que lo usenanocomo editor de texto, pero si lo sabevim, aún mejor.Por ejemplo, ¿qué pasa si necesito editar una
qdbus org.ayatana.bamf /org/ayatana/bamf/matcher org.ayatana.bamf.matcher.ActiveWindowlínea enorme, verdad? Pero confc, puedo abrirvimy editar/org/ayatana/bamf/matcher, guardar, salir y se ejecutará.fuente
No puedes usar
!!pero ...Del manual :
fuente
Si insiste en usar la
!!sintaxis de expansión del historial en lugar defc(ya mencionado), hay una manera.De manera predeterminada, la
historyexpansión está deshabilitada para sesiones de shell no interactivas, por ejemplo, en scripts.Para habilitar la expansión del historial en scripts, habilite primero las opciones de shell relevantes:
set -o histexpandpuede escribirse comoset -Htambién.Ahora las operaciones de expansión del historial, por ejemplo
!!, funcionarían dentro del script.fuente