J'ai vu quelqu'un taper
apt-get install !!
Il l'a fait plusieurs fois et à chaque fois, un programme différent a été installé. Il semble qu'il ait automatiquement compris ce qu'il fallait faire ensuite.
Cependant, lorsque je l'ai essayée sur ma machine virtuelle Ubuntu 14.04.1 LTS, elle ne contenait que des instructions d'utilisation. Googler pour apt-get install !!
ne semble pas très bien fonctionner. De nombreux résultats de recherche ne contiennent pas le double point d'exclamation.
Que fait apt-get install !!
-il et que pourrait-il manquer sur ma machine pour qu’elle ne fonctionne pas?
command-line
bash
Thomas Weller
la source
la source
Réponses:
!!
est un raccourci dans bash qui signifie la dernière commande exécutée.Essaye ça:
Dans ce contexte, le
!!
sera étendu à un autreecho hello
.J'imagine que ce qui s'est passé, c'est qu'ils ont essayé d'exécuter une commande et que cela a échoué et s'est plaint de ne pas l'avoir installé. Alors ils ont tapé
sudo apt-get install !!
parce que le nom du paquet était par coïncidence le même nom que le nom de la commande qu'ils ont essayé d'exécuter. La commande résultante tenterait d'installer un package du même nom que la commande qu'ils venaient d'exécuter.la source
lynx
, voir qu'il n'est pas installé et ensuite l'exécuterapt-get install !!
installe Lynx. Cela n'a pas fonctionné pour moi, car j'ai essayé enapt-get install !!
tant que commande unique.sudo
, par exemple,apt-get install
quelque chose.apt-get install some-program
, et lorsque vous réalisez que vous n’avez pas de privilèges, vous vous contentez de lesudo !!
développersudo apt-get install some-program
.!!
est un alias pour!-1
, c'est-à-dire le dernier élément de l'historique bash.!-2
est l'avant-dernière et ainsi de suite.!!
n'a rien à voir avecapt-get
. C'est un mot clé shell qui sera étendu à la commande précédente. Cette expansion est effectuée par shell avant que la commande en cours ne soit interprétée.De
man bash
:Par exemple, si vous exécutez une commande:
Alors si vous courez:
il sera étendu à:
Comme vous pouvez le constater, il est étendu à deux packages
echo
, l’autrefoo
. Il n'y a pas de paquet autonome nomméfoo
etecho
. En plus du shell intégré,echo
il y a un/bin/echo
exécutable qui fait partie du paquet GNU-coreutils. Donc, vous obtiendrez des erreurs en disant qu'aucun de ces paquets n'est disponible.D'autre part, l'autre personne pourrait faire quelque chose comme ceci:
Comme vous pouvez le voir
cowsay
est en cours d'installation.Je vous suggère de ne pas le faire (sauf si vous en êtes certain), le fait d'être explicite ne nuit pas.
la source
!!
. Je savais ce que cela voulait dire, mais j'aime bien la façon dont vous l'avez décrit.!!
: Reportez-vous à la commande précédente. Ceci est un synonyme de!-1
(La source ).Par exemple, si j'exécute:
puis rappelez-vous que je dois être Root, alors je pourrais simplement taper:
c'est la même chose que de taper:
C'est utile lorsque votre dernière commande contient beaucoup de caractères.
la source
sudo !!
commande; Ce que je fais depuis des années est d’appuyer une fois sur la touche haut, puis de déplacer le curseur tout à fait à gauche et d’ajoutersudo
.sudo
.Ctrl+A
ou du moinsHome
?La question a déjà été répondue, je ne vais donc pas me répéter. Cependant, je tiens à souligner qu’il existe de nombreux raccourcis de ce type dans différents shells qui permettent de répéter / trouver / éditer des commandes. Certains de ceux que j'utilise sont:
!$
suivi de ENTERva taper le dernier mot de la dernière commande. Par exemple,Cela vous atterrira dans
/let/me/in
vi /home/mycoolproject.sh
et suivi avec quelques commandes aléatoires commels
,cd
,pwd
, etc. , puis juste en tapant Ctrl- Rsuivicool
va tirer vers le haut quevi
commande.Il suffit de chercher les raccourcis clavier bash (ou csh ou autre) et ce sera la meilleure chose que vous ayez faite aujourd'hui!
la source