He visto a alguien escribiendo
apt-get install !!
Lo hizo algunas veces y cada vez, se instaló un programa diferente. Parece que automáticamente descubrió lo que se necesita a continuación.
Sin embargo, cuando lo probé en mi máquina virtual Ubuntu 14.04.1 LTS, solo mostró algunas instrucciones de uso. Buscar en Google apt-get install !!
no parece funcionar muy bien. Muchos resultados de búsqueda no contienen el doble signo de exclamación.
¿Qué hace apt-get install !!
y qué podría faltar en mi máquina que no funcionó?
command-line
bash
Thomas Weller
fuente
fuente
Respuestas:
!!
es un acceso directo en bash que significa el último comando ejecutado.Prueba esto:
En este contexto,
!!
se ampliará a otroecho hello
.Me imagino que lo que sucedió fue que intentaron ejecutar un comando y falló y se quejó de que no estaba instalado. Entonces escribieron
sudo apt-get install !!
porque el nombre del paquete era casualmente el mismo que el nombre del comando que intentaron ejecutar. El comando resultante intentaría instalar un paquete con el mismo nombre que el comando que acababan de intentar ejecutar.fuente
lynx
, verifique que no esté instalado y luego ejecutarloapt-get install !!
instala lynx. No funcionó para mí, porque lo intentéapt-get install !!
como el único comando.sudo
, por ejemploapt-get install
, algo.apt-get install some-program
, y cuando se da cuenta de que no tiene privilegios, simplementesudo !!
, que se expandesudo apt-get install some-program
.!!
es un alias para!-1
, lo que significa el último elemento en el historial de bash.!-2
es el penúltimo y así sucesivamente.!!
no tiene nada que ver conapt-get
. Es una palabra clave de shell que se expandirá al comando anterior. Shell realiza esta expansión antes de interpretar el comando actual.De
man bash
:Por ejemplo, si ejecuta un comando:
Entonces si corres:
se ampliará a:
Como puede ver, se expande en dos paquetes, a saber,
echo
y el otro esfoo
. No hay un paquete independiente llamadofoo
yecho
. Además del shell integrado,echo
hay un/bin/echo
ejecutable que forma parte del paquete GNU-coreutils. Por lo tanto, recibirá errores que indican que no hay paquetes disponibles.Por otro lado, la otra persona podría estar haciendo algo como esto:
Como puede ver
cowsay
se está instalando.Te sugiero que no hagas esto (a menos que estés seguro), ser explícito no hace daño.
fuente
!!
. Sabía lo que significaba, pero me gusta cómo lo describiste.!!
: Consulte el comando anterior. Este es un sinónimo de!-1
(La fuente ).Por ejemplo, si ejecuto:
entonces recuerda que necesito ser Root, entonces simplemente podría escribir:
es lo mismo que escribir:
Es útil cuando su último comando contiene muchos caracteres.
fuente
sudo !!
comando; Lo que he estado haciendo durante años es presionar la tecla hacia arriba una vez, luego mover el cursor hacia la izquierda y agregarsudo
.sudo
.Ctrl+A
o al menosHome
?La pregunta ya ha sido respondida, así que no seré repetitivo. Sin embargo, me gustaría señalar que existen numerosos accesos directos en varios shells que ayudan a repetir / buscar / editar comandos. Algunos de los que uso son:
!$
seguido de ENTERescribirá la última palabra del último comando. Por ejemplo,Esto te llevará a
/let/me/in
vi /home/mycoolproject.sh
y lo siguió con algunos comandos al azar, comols
,cd
,pwd
, etc, entonces simplemente escribiendo Ctrl- Rseguido porcool
se tire hacia arriba quevi
mando.¡Solo busca atajos de teclado bash (o csh o lo que sea) y será lo mejor que hiciste hoy!
fuente