Führe denselben Befehl erneut aus, aber als root

90

Manchmal merke ich bei der Ausführung eines Befehls nicht, dass ich ihn als Super-User ausführen muss, um ausreichende Berechtigungen zu haben.

Gibt es eine Möglichkeit, den gleichen Befehl erneut auszuführen, aber als Super-User?

    
Trufa 27.05.2013, 22:31
quelle

10 Antworten

165

Der einfachste Weg ist:

sudo !!

Dies wird den letzten Befehl aber als Super-Benutzer ausführen.

Quelle .

    
Trufa 27.05.2013, 22:31
quelle
63

Antwort: Sie geben sudo !! unmittelbar danach ein, um den vorherigen Befehl mit erweiterten Rechten zu wiederholen.

Bearbeiten: Bild gefunden über reddit und es ist eine Parodie auf den ursprünglichen xkcd-Comic von Randall Munroe.

    
wim 30.05.2013 00:33
quelle
17

Sie können die Nach-oben-Taste verwenden, um durch Ihre alten Befehle zu scrollen und sie neu zu schreiben / ändern und den sudo vor ihnen hinzuzufügen. (Die Home-Taste über den Pfeiltasten setzt die Position auf den Anfang.)

Ich mag die Idee sudo !! nicht, weil Sie manchmal dazwischen einen weiteren Befehl hinzufügen und sich nicht mehr erinnern.

    
Xylol 27.05.2013 23:31
quelle
12

Ich füge nur eine Alternative hinzu: so kurz wie sudo !! eingeben und flexibler:

Up-arrow (once, or until you find the command you want to sudo/edit, if it's older)
ctrl+A   (place cursor at beginning of line)
"sudo "
Enter

Es ist genau die gleiche Anzahl von Tastenanschlägen (ich zähle "Strg + A" als eins ...), aber das Hinzufügen von "Pfeil nach oben" können Sie auf den Befehl in Ihrer Geschichte tun.

    
Olivier Dulac 28.05.2013 13:09
quelle
7

Es gibt einige Möglichkeiten, dies zu tun

  • Geben Sie einfach den Befehl erneut ein und fügen Sie sudo vor dem Befehl

  • hinzu
  • Drücken Sie Pfeil nach oben , um den letzten Befehl zu erhalten und setzen Sie sudo davor.

  • Geben Sie sudo !!

  • ein

Der !! wird auf den zuletzt eingegebenen Befehl erweitert. Sie können ähnliche Dinge mit anderen Dingen mit dem Kommandozeilenverlauf tun, siehe hier

    
user162424 28.05.2013 11:22
quelle
6

Diese Frage hätte in " Gleicher Befehl ausführen, aber mit einigen Modifikationen " verallgemeinert werden können, da eine der genialen Design-Entscheidungen in Unix darin besteht, was einmal in der Shell implementiert wird Jeder Befehl wird von der Shell aufgerufen.

Mit anderen Worten, dieser Trick gilt nicht nur für sudo :

  • Wiederholen Sie den vorherigen Befehl als Superuser ( sudo !! )
  • Wiederhole den vorherigen Befehl und tippe ihn ( time !! )
  • Wiederholen Sie den vorherigen Befehl mit einer anderen Umgebung ( env A=b B=z !! )
  • Wiederholen Sie den vorherigen Befehl ( !! )

Die Verlaufserweiterung (auch als Historienersetzung bezeichnet) ist nur eine Shell-Funktion, um das Wiederholen früherer Befehle zu vereinfachen (mit weniger Tastenanschlägen). Überprüfen Sie Ihre Shell-Manpage auf history expansion . Es beschreibt viele weitere Tricks und Abkürzungen, die Sie beispielsweise mit der Geschichte machen können:

Sie können sich die vorhergehenden Befehle mit der Nummer anzeigen lassen:

!55                 # repeat command number 55
!-1                 # repeat the previous command, alias for !!
!-2                 # repeat the command before the previous command

Sie können sich in früheren Befehlen auf einzelne Wörter beziehen:

some-command !$     # run some-command on the last arg of previous command

Sie können auch vor dem Wiederholen suchen:

!?awk               # repeat the last command including the string 'awk'

Sie können den Verlauf durchsuchen und etwas durch etwas anderes ersetzen:

!?awk?:s/str1/str2/  # repeat previous command matching 'awk' replacing str1 by str2

Und vieles mehr, da Sie Befehlsauswahl, Arg-Auswahl, Suchen und Ersetzen unabhängig voneinander kombinieren können.

Die Manpage deiner Shell (in diesem Fall man bash ) ist dein Freund.

    
arielf 31.05.2013 21:07
quelle
5

Ich benutze zsh anstelle von bash und habe dies in meinem ~/.zshrc , also drücke Alt + S fügt sudo am Anfang der Befehlszeile ein:

insert_sudo () { zle beginning-of-line; zle -U "sudo " }
zle -N insert-sudo insert_sudo
bindkey "^[s" insert-sudo

Leider konnte ich keinen Weg finden, dasselbe in bash zu machen.

    
Patches 28.05.2013 01:58
quelle
1
su -c "!!"

Wenn Sie keine Berechtigung haben, root mit sudo oder sudo zu sein, wurde das Programm nicht auf dem System installiert.

    
Achu 29.05.2013 06:37
quelle
1

So wie ich es bevorzuge:

  • Pfeiltaste nach oben
  • Startseite
  • "sudo"
  • Geben Sie
  • ein

Aber es könnte einfacher sein, einfach "sudo !!" zu machen, es liegt an dir.

    
Farid El Nasire 14.06.2013 16:22
quelle
1

Wenn du es in einem Alias ​​machen willst, musst du alias redo='sudo $(history -p !!)' aus irgendeinem Grund verwenden.

    
Aaron Franke 07.07.2016 11:55
quelle

Tags und Links