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
fc
comando 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
fc
es que si solo ejecuta elfc
comando por sí mismo, abrirá el editor de texto especificado en laFCEDIT
variable (que probablemente desee almacenar~/.bashrc
) y el contenido de la línea será su último comando. Para su comodidad, le sugiero que lo usenano
como 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.ActiveWindow
línea enorme, verdad? Pero confc
, puedo abrirvim
y 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
history
expansió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 histexpand
puede escribirse comoset -H
también.Ahora las operaciones de expansión del historial, por ejemplo
!!
, funcionarían dentro del script.fuente