1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. In diesem Bereich findet ihr Tutorials und Reviews. Die Forenrechte zur Erstellung neuer Themen sind hier eingeschränkt, da Problemdiskussionen bitte in den übrigen Forenbereichen auf Apfeltalk zu führen sind. Wer ein Tutorial oder Review einstellen möchte, kann im Unterforum "Einreichung neuer Tutorials" ein neues Thema erstellen. Die Moderatoren verschieben den Beitrag dann in den passenden Bereich.
    Information ausblenden

"Pimp my Terminal" - neue Funktionalitäten für die Bash!

Dieses Thema im Forum "macOS-Tutorials" wurde erstellt von rootie, 12.06.16.

Schlagworte:
  1. rootie

    rootie Grünapfel

    Dabei seit:
    30.06.11
    Beiträge:
    7.148
    Hallo zusammen,

    ich habe mir vor vielen Jahren einmal eine schöne Konfigurationsdatei für das Terminal geschrieben. Diese Datei fügt viele neue Funktionalitäten hinzu, unter anderem Sicherheitsabfragen vor dem Löschen von Dateien bzw. Verzeichnissen. Gerade für Anfänger ist es also eine sehr gute Möglichkeit, das Schreckgespenst "Terminal" einmal auszuprobieren. Es bietet schier unbegrenzte Möglichkeiten zur Konfiguration von OS X.

    Um das Terminal bzw. die darunter liegende Bash konfigurieren zu können, braucht man die Datei .profile direkt im Home-Verzeichnis. Der Punkt vor der Datei bedeutet, dass sie versteckt und standardmäßig nicht angezeigt wird. Das ist aber erst mal nicht tragisch. Ich erkläre also erst mal die neuen Funktionalitäten in der Datei (welche übrigens an diesem Post dranhängt).

    Code:
    # Verschiedene Aliase, um die Eingaben zu erreichen. Statt "cd .." kann man fortan einfach ".." eingeben, um ein Verzeichnis nach oben zu kommen
    alias ..='cd ..'
    alias cd..='cd ..'
    
    # Sicherheitsabfrage beim Kopieren standardmäßig aktivieren
    alias cp='cp -i'
    alias mv='mv -i'
    
    # Sprechendere Ausgabe beim ls-Befehl
    alias ls='ls -F'
    
    # Die Eingabe von "l" zeigt direkt eine schön formatierte Ausgabe an. Für so etwas müsste man normalerweise immer "ls -alF" eingeben
    function l
      {
        /bin/ls -alF "$@" | "${PAGER:-more}"
      }
    
    # "psg" steht für "ps grep" und filtert die Prozesse nach Suchkriterien aus. Beispiel: "psg itunes" zeigt alle Prozesse an, die "itunes" im Namen haben
    function psg()
      {
        /bin/ps -ef | grep -i $* | grep -v 'ps -ef' | grep -v grep
      }
    
    # Fügt Sicherheitsabfragen zum Lösch-Befehl "rm" hinzu. Somit kann es nicht mehr passieren, dass man versehentlich Dateien löscht.
    function rm()
      {
        local RM option opt_{f,i,r}
    
        RM=/bin/rm
    
        for option in "$@"
        do
            case $option in
            -*)
                option="${option#?}"
                while [ -n "$option" ]
                do
                    case $option in
                        f*) opt_f=' -f'
                            unset opt_i;; # '-f' overrides '-i'.
                        i*) opt_i=' -i'
                            unset opt_f;; # '-i' overrides '-f'.
                     [rR]*) opt_r=' -r';;
                         *) echo "rm: illegal option $option"
                            echo "usage: rm [-fiRr] file ..."
                            return 2;;
                    esac
                    option="${option#?}"
                done
                shift
                ;;
            *)
                break;;
            esac
        done
    
        if [ -n "$opt_i" ]
        then
            $RM $opt_r $opt_f -i "$@"
        else
            if [ $# -le 1 ]
            then
                /bin/ls -dbF "$@"
                            echo -n "Really remove $# file/dir"
                if [ -n "$opt_r$opt_f" ]; then echo -n " with$opt_r$opt_f"; fi
                echo -n "? [yes,no] "
                read option
                case "$option" in
                y | yes)
                    $RM $opt_r $opt_f "$@";;
                *)
                    echo "Nothing removed.";;
                esac
            else
                /bin/ls -dbF "$@"
                echo -n "Really remove $# files/dirs"
                if [ -n "$opt_r$opt_f" ]; then echo -n " with$opt_r$opt_f"; fi
                echo -n "? [yes,interactive,no] "
                read option
                case "$option" in
                y | yes)
                    $RM $opt_r $opt_f "$@";;
                i | interactive)
                    $RM -r $opt_f -i "$@";;
                *)
                    echo "Nothing removed.";;
                esac
            fi
        fi
    }
    
    # Formatiert das Prompt schön und informativ mit Benutzername und Rechnername
    if [ `whoami` == "root" ]
    then
       PS1="\[\033[1m\]\u@\h:\w\[\033[0m\]# "
    
    else
       PS1="\[\033[1m\]\u@\h:\w\[\033[0m\]> "
    fi

    Ich arbeite nun schon seit über 15 Jahren mit dieser Konfiguration und bin immer gut gefahren. Selbstverständlich kann man hie und da noch ein wenig etwas erweitern. Solltet Ihr dazu Input haben, einfach schreiben. Dann erweitere ich das Tutorial entsprechend.

    Nun zur Frage, wie man die Datei entsprechend "scharf schalten" kann. Das geht so:

    - Öffnet ein Terminal (Apfel-Taste + Leertaste, dann "terminal" eingeben)
    - Wenn die Datei .profile bereits existiert, tippt folgendes ein: "open .profile" (ohne Anführungszeichen). Wenn nicht, müsst Ihr zunächst "touch .profile" eingeben, um die Datei anzulegen
    - Kopiert den Inhalt der Datei profile.txt aus dem Anhang in den Editor und speichert die Datei
    - Beendet das Terminal komplett und startet es neu; die Änderung ist direkt wirksam

    Viel Spaß beim Ausprobieren - wenn Ihr Fragen habt, einfach schreiben :)


    Viele Grüße,
    rootie
     

    Anhänge:

Diese Seite empfehlen