Kennt ihr das? Da tippt man einen Befehl im Terminal, um danach die Meldung zu sehen, dass dafür Root-Rechte erforderlich sind. Um ein einzelnes Kommando mit Root-Rechten ausführen zu können, gibt es bekanntlich den Befehl sudo. Nun könnte man mit 'Pfeil-nach-oben' den auszuführenden Befehl aus der History holen, den Cursor an den Anfang setzen, sudo davor schreiben und den Befehl erneut ausführen - es geht aber auch einfacher.
Das Kommando sudo !! macht genau das. Es führt den zuletzt eingegeben Befehl mit sudo aus. Im oben gezeigten Beispiel führt sudo !! den Befehl sudo mkdir delme aus, bzw. löscht das Verzeichnis anschliessend wieder. Wenn man sudo !! verwendet, sollte man sich absolut sicher sein, welches der zuletzt eingegebene Befehl war, um Unheil zu vermeiden.
Falls man die Root-Rechte für mehrere Befehle braucht, kann man mit sudo -i oder su eine Root-Shell öffnen und diese danach mit exit wieder verlassen. Vom Arbeiten in einer Root-Shell wird jedoch abgeraten, weil man schnell vergisst, dass man mit erweiterten Rechten unterwegs ist.
Nachtrag
Auf unserem Mastodon-Kanal hat Andre eine Frage gestellt, bzw. eine Anregung gegeben:
Gibt es das auch für andere Befehle? Zum Beispiel:
$ cat /some/very/long/file.txt
[thousands of lines]
$ grep "what i search for" !!
Ja, das geht. Grundsätzlich holt !! immer den letzten Befehl zurück. Für das von Andre genannte Beispiel (lange Datei durchsuchen), könnte man das so machen:
cat big_file
!! | grep suchtext
Wer so etwas öfters braucht, möchte evtl. einen Alias dafür anlegen. Mir ist das leider nicht gelungen. Der Alias:
alias catgrep="!! | grep !:1"
... funktioniert nicht, weil !! im Alias nicht als Kommando akzeptiert wird. Vielleicht hat die Community eine Idee, wie man das umsetzen könnte.
Moin den Sinn dieses bangbang habe ich bis heute noch nicht verstanden. Wenn "Keine Berechtigung" kommt drücke ich Pfeil nach oben und Pos1 und schreibe dann sudo hin. Hat den Vorteil dass ich den Befehl nochmal sehen kann.
Zitat: "Wenn man sudo !! verwendet, sollte man sich absolut sicher sein, welches der zuletzt eingegebene Befehl war, um Unheil zu vermeiden."
!! ist ja nicht auf sudo beschränkt, da es kein Parameter von sudo ist.
Es gehen auch andere Dinge damit:
echo "!!" > file
Oder: cowsay "!!"
:-)
WHAT! Warum erfahre ich das erst jetzt? Wie oft ist mir das schon passiert. Er vor 15 Minuten das letzte Mal. Vielen Dank dafür!
Es gibt das Oh-my-zsh Plugin sudo, dass etwas ganz Ähnliches tut, bei dem man aber sieht was man tut...
Könnt ihr vielleicht mal eine Art Anleitung für PolicyKit machen und z.B. was man einstellen muss um auf verschiedenen Distros updates ohne Root Aufforderung durchführen zu können. (Evt. auch Deinstallieren von Flatpacks oder so und andere Dinge die Sicherheitstechnisch Sinn ergeben können(aber z.B. sowas wie Downgraden von Packeten weiterhin nur mit Root machen zu können usw.))
"...z.B. was man einstellen muss um auf verschiedenen Distros updates ohne Root Aufforderung durchführen zu können..."
p { margin-bottom: 0.25cm; line-height: 115%; background: transparent }code { font-family: "Liberation Mono", monospace }a:link { color: #000080; so-language: zxx; text-decoration: underline }
Sudo ist bloatware. Verwendet doas.
Was macht denn der Unterschied aus?
für "!!" im Alias kenne ich folgendes mittels fc
https://github.com/Bash-it/bash-it/blob/master/aliases/available/fuck.aliases.bash