Ich habe jemanden beim Tippen gesehen
apt-get install !!
Er tat dies einige Male und jedes Mal wurde ein anderes Programm installiert. Es scheint, als hätte es automatisch herausgefunden, was als nächstes benötigt wird.
Als ich es jedoch auf meiner virtuellen Ubuntu 14.04.1 LTS-Maschine ausprobierte, wurden nur einige Verwendungsanweisungen angezeigt. Googeln für apt-get install !!
scheint nicht sehr gut zu funktionieren. Viele Suchergebnisse enthalten kein doppeltes Ausrufezeichen.
Was macht apt-get install !!
und was könnte an meinem Rechner fehlen, dass es nicht funktioniert hat?
command-line
bash
Thomas Weller
quelle
quelle
Antworten:
!!
ist eine Abkürzung in Bash, die bedeutet, dass der letzte Befehl ausgeführt wurde.Versuche dies:
In diesem Zusammenhang
!!
wird das zu einem anderen erweitertecho hello
.Ich stelle mir vor, was passiert ist, als sie versucht haben, einen Befehl auszuführen, der fehlgeschlagen ist und sich darüber beschwert hat, dass er nicht installiert wurde. Dann tippten sie,
sudo apt-get install !!
weil der Paketname zufällig mit dem Namen des Befehls übereinstimmte, den sie auszuführen versuchten. Der resultierende Befehl würde versuchen, ein Paket mit demselben Namen wie der Befehl zu installieren, den sie gerade ausgeführt hatten.quelle
lynx
, stelle ich sicher , dass es nicht installiert ist undapt-get install !!
installiere dann lynx. Bei mir hat es nicht geklappt, weil ich esapt-get install !!
als einziges Kommando versucht habe .sudo
, wie zum Beispielapt-get install
etwas zu tun.apt-get install some-program
, und wenn Sie feststellen , Sie haben keine Berechtigung, die Sie geradesudo !!
, die expandiert nachsudo apt-get install some-program
.!!
ist ein Alias für!-1
das letzte Element in der Bash-Geschichte.!-2
ist das vorletzte und so weiter.!!
hat nichts damit zu tunapt-get
. Es ist ein Shell-Schlüsselwort, das auf den vorherigen Befehl erweitert wird. Diese Erweiterung wird von der Shell durchgeführt, bevor der aktuelle Befehl interpretiert wird.Von
man bash
:Wenn Sie beispielsweise einen Befehl ausführen:
Wenn du dann rennst:
es wird erweitert auf:
Wie Sie sehen, ist es nämlich in zwei Pakete erweitert
echo
und das andere istfoo
. Es gibt kein eigenständiges Paket namensfoo
undecho
. Abgesehen von der eingebauten Shellecho
gibt es eine/bin/echo
ausführbare Datei, die Teil des GNU-Coreutils-Pakets ist. Sie erhalten also die Fehlermeldung, dass keine solchen Pakete verfügbar sind.Auf der anderen Seite könnte die andere Person so etwas tun:
Wie Sie sehen,
cowsay
wird gerade installiert.Ich würde Ihnen empfehlen, dies nicht zu tun (es sei denn, Sie sind sich sicher), explizit zu sein, schadet nicht.
quelle
!!
. Ich wusste, was es bedeutete, aber ich mag die Art, wie Sie es beschrieben haben.!!
: Siehe vorherigen Befehl. Dies ist ein Synonym für!-1
(Die Quelle ).Zum Beispiel, wenn ich ausführe:
Dann denke daran, dass ich Root sein muss, dann könnte ich einfach Folgendes eingeben:
es ist dasselbe wie das Tippen:
Dies ist nützlich, wenn Ihr letzter Befehl viele Zeichen enthält.
quelle
sudo !!
Befehl nachgedacht . Was ich seit Jahren mache, ist, einmal die Aufwärts-Taste zu drücken, dann den Cursor ganz nach links zu bewegen und hinzuzufügensudo
.sudo
.Ctrl+A
oder zumindestHome
?Die Frage wurde bereits beantwortet, daher werde ich mich nicht wiederholen. Ich möchte jedoch darauf hinweisen, dass es in verschiedenen Shells zahlreiche solcher Verknüpfungen gibt, die das Wiederholen / Finden / Bearbeiten von Befehlen erleichtern. Einige von denen, die ich benutze, sind:
!$
gefolgt von ENTERwird das letzte Wort des letzten Befehls eingeben. Zum Beispiel,Dies wird Sie in landen
/let/me/in
vi /home/mycoolproject.sh
und anschließend mit einigen zufälligen Befehlen auf wiels
,cd
,pwd
usw. dann nur die Eingabe Ctrl- Rgefolgt voncool
wird , dass die Pull - up -vi
Befehl.Suchen Sie einfach nach bash (oder csh oder was auch immer) Tastaturkürzeln und es wird das Beste sein, was Sie heute getan haben!
quelle