Kleine Spielerei mit Kommandozeile

Die Kommandozeile kann gerade Neulinge stark einschüchtern, wenn der Weg über eine grafische Oberfläche oftmals nicht mehr möglich ist. Häufig kommt es daher auch vor, dass man einen tollen Befehl aus dem Internet kopiert und diesen dann abschicken will. Erst nach Abschicken des Befehls merkt man, dass man ein kleines aber effektives sudo vergessen hat. Ich habe neulich ein tolles Skript für die Kommandozeile gefunden.

Was es genau macht?
Ganz einfach. Sobald man einen Befehl ohne sudo abgeschickt hat und die Rückmeldung bekommt, dass man keine administrativen Berechtigungen besitzt, gibt der Benutzer sowas wie „doitanyway“ ein und bestätigt die Eingabe. Schon wird der vorherige Befehl mit einem sudo versehen und wird nun korrekt ausgeführt. Daher eine kleine Spieleri.

Wie das genau funktioniert beschreibe ich hier:

Zuerst öffnet ihr die .bashrc in eurem Home-Verzeichnis:

nano .bashrc

Nun fügt ihr am Ende dieser Datei folgenden Code ein:

doitanyway ()
{
    set : `history 2 | head -1`;
    shift;
    shift;
    sudo /bin/sh -c "$*"
}

Ihr könnt natürlich den Befehl auch umbenennen in etwas aussagekräftigeres.
Jetzt abspeichern mit STRG+O und beenden mit STRG+X

Nun müssen die Änderungen an der .bashrc eingelesen werden mit:

source .bashrc

Jetzt dürft ihr mal das Ergebnis ausprobieren.
Bei mir schaut das so aus 😉

doitanyway

Wie habt ihr euer Befehl nun genannt? Bin gespannt auf Eure Antworten

17 Kommentare

  • Wirklich nett! Aber ein „sudo !!“ tut es auch, ganz ohne Kosmetik für die .bachrc 😉

  • Ok, meine spitzen Klammern wurden gefressen 🙂

    Ich meinte CURSOR-UP + POS1 + sudo

  • alias update=’sudo apt-get update && sudo apt-get upgrade‘
    alias clean=’sudo apt-get autoremove‘
    alias q=’exit‘
    alias h=’history‘
    alias wlantest=’watch -n 1 cat /proc/net/wireless‘
    alias install=’sudo apt-get install‘
    alias remove=’sudo apt-get remove‘
    alias screencast=’ffmpeg -f x11grab -r 25 -s 1440*900 -i :0.0 -vcodec huffyuv -sameq screencast.avi‘
    alias add=’sudo add-apt-repository‘
    alias aus=’shutdown -h now‘
    alias java=’java -jar‘
    alias anonym=’cd tor-browser_de/ && ./start-tor-browser‘

  • Prinzipiell ne gute Idee, allerdings ist diese Funktion ja bereits Bestandteil der bash, wenn man das sudo vergessen hat ist eigentlich alles das man tun müsste

    sudo !!

  • Warum bearbeitest du deine .bashrc mit root-Rechten?

  • Das Es die Funktion schon builtin gibt, haben die anderen ja schon geschrieben. Zusätzlich weiß ich nicht, ob es so klug ist eine Datei, die mit Nutzerrechten verwaltet wird mit scriptgesteuerten sudo Befehlen zu kombinieren, ich meine da kann (auch ganz automatisch z.B. mit inotify jeder Hansel der 3 Minuten an deinem Keyboard war den Befehl mit eigenem Kram überschreiben.
    Ansonsten aber ne schöne Idee um die Consolenverweigerer etwas neugierig zu machen, nur priviligierte Befehle würde ich nicht unbedingt zum Einstieg nehmen.
    Aber wie gesagt von der Idee her nett. 🙂

  • Habe die Passage mit sudo nano .bashrc bearbeitet – vielen Dank für die Meldung.
    Und ja ich weiß es gibt sudo !! 😉
    Dies sollte ja lediglich eine Übersicht sein, was alles so schönes mit der Bash Shell machbar ist 🙂

  • Muss mich gerade selbst korrigieren? Habe irgendwie freudsch gelesendacht, dass du direkt auf die Datei .bash_history zugreifst, was natürlich nicht der Fall ist. Mea Culpa

  • Die Tage ist das an mir vorbeigeflogen:

    Favourite thing in my .bashrc remains: alias fuck=’sudo $(history -p \!\!)‘

    https://twitter.com/liamosaur/status/506975850596536320

  • Der Weg über die History ist aber nicht ungefährlich, da ein Befehl nicht in die History aufgenommen wird, wenn er mit whitespace angefangen hat.

    So kann es passieren, dass ich einen befehlt mit sudo aufrufe, bei dem ich das vielleicht besser nciht gemacht hätte.

    sudo !! (oder ein Alias darauf, das geht ja auch) ist also deutlich sicherer!

  • alias c=’clear‘
    Für die welche gerne eine aufgeräumte shell haben

    alias irc=’screen -dr irc‘
    Muss ich wohl nichts dazu sagen 😉

    alias untargz=’tar xvzf‘
    alias targz=’tar cfvz‘
    Für die welche es nach hunderte Male eingeben noch nicht kapiert haben 😛

  • Und dann habe ich mein „egal“ gleich wieder entfernt, obwohl das super funktionierte und irgendwie cool war.
    Der Einwand mit dem Whitespace hat mich das mal ausprobieren lassen.
    Zwar wurden nach „ls“ auch “ ls“ und “ apt-get autoclean“ (zumindest für Wiederholungen mit der Tastatur sichtbar) in die History aufgenommen, ich bekam aber weder für ‚ ls‘ noch für das “ apt-get“ eine Ausgabe.

  • Hat mir sehr geholfen! Schöner Artikel.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.