Estoy tratando de establecer un alias sudo !!
en Bash. Lo intenté alias sbb='sudo !!
', pero lo interpreta como un literal !!
e imprime
sudo: !!: command not found
Si uso comillas dobles, sustituye la explosión doble en la cadena en sí, por lo que no funciona.
¿Hay alguna manera de hacer funcionar esto? O un alias alternativo? ``
bash
sudo
alias
command-history
history-expansion
Manishearth
fuente
fuente
Respuestas:
!!
se expande con bash cuando lo escribe. No se expande por sustitución de alias.Puede usar el
history
incorporado para hacer la expansión:Si el comando es más que un simple comando (por ejemplo, contiene redirecciones o tuberías), debe invocar un shell bajo sudo:
fuente
man tcsh
y descubrí que sí hace expansión de historial durante la expansión de alias "como si el comando original fuera la línea de entrada anterior". Interesante. Sin embargo,alias sbb 'sudo \!-2
no funcionó como se esperaba (en realidad sustituyó la segunda entrada anterior);alias sbb 'sudo \!\!'
funcionó como se esperaba (sustituidosbb
por!!
); y al final resultó que lo que quería eraalias sbb 'sudo \!-1'
lo que esperaba que fuera lo mismo\!\!
. (tcsh 6.17.06 (Astron) 15/04/2011) YMMV. Buena suerte.sbb
preferiría elprease
alias sugerido por @jpschorrTratar:
Me gusta en realidad prefiero llamarlo 'por favor':
Información:
fc
es un comando incorporado en el shell bash. que enumera, edita y vuelve a ejecutar comandos ingresados previamente a un shell interactivo.fuente
please
definitivamente es el camino a seguir!please
hace que parezca que la terminal es una entidad con la que tengo que ser amable para poder hacer las cosas. Prefiero algo que da una mejor sensación de control, comofuck
;)Ahora hay un repositorio para este propósito en GitHub, comprueba mágicamente si necesita derechos de superusuario, también corrige los errores tipográficos:
https://github.com/nvbn/thefuck
fuente
apt-get install thefuck
cuál existe, pero no funciona en mi Ubuntu 15.10; (Esto se publicó originalmente en esta pregunta, pero luego se sugirió publicar aquí.
Aquí es cómo puede usar
fc
yhistory
con alias para!-
sustituciones similares. Supongamos que si desea utilizar!-n
(donde n es el dígito para n º último comando utilizado), entonces usted puede utilizarfc
yhistory
con el alias de la siguiente manera:Utilizando
history
:Nota: Aquí
!-n
debe encerrarse con'
o''
.Utilizando
fc
:Nota: aquí 1 st y 2 nd
-n
se utilizan para especificar el rango de lista del historial.Aquí usé eco antes de ejecutar el comando para talar como
!-<n>
.fuente
history -p
yfc
. ¿Algo nuevo aquí?-ln -n -n
ser intensamente confuso; también el bit sobre'
o''
(y también el bit sobre-<n>
).$(fc -ln -1)
fuente