Tipps & Tutorials: 29. November 2008,

Terminal, Mac OS X: Baumansicht mit Tree für Ordner und Files

TerminalSelige DOS-Zeiten kannten den „Tree“-Befehl, der Verzeichnisse und Dateien als Baumstruktur im Terminal ausgab. Mit einem etwas komplizierten Befehl kann man die Baumansicht auch im Mac-Terminal nachbauen, via Alias-Definition auch simpel mit einem neuen Befehl.

Werbung

Best of both worlds, heißt es von Mac OS X: eine intuitive GUI und ein mächtiges Terminal, wenn man denn eines will. Schnell eine Übersicht über Verzeichnisbäume erhielt man unter DOS seinerzeit mit „tree“, das eine ascii-basierte Baumansicht des aktuellen Directorys und seiner Unterverzeichnisse ausgab. Mit einem etwas komplizierten Befehl kann der Ersatz für längere dir/cd/ls -al-Orgien auch unter Mac OS X nachgebaut werden.

find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'

Die Ausgabe sieht dann folgendermaßen aus:
[singlepic id=1948 w=400]
Der Befehl wurde bei murphymac konstruiert, dort finden sich auch ausführbare Shellscripte für denselben Zweck. Wir wollen den Anlass nutzen, um uns Alias-Befehle auf der Shell einzurichten – merken kann man sich unsere konkrete lange Befehlsfolge nicht. Der Zeitspareffekt der Konsole ist auch dahin, wenn man erst per Copypaste einen Befehl übernimmt – in der Zeit hat man statt „Tree“ auch Spotlight verwendet.

Also legen wir eine Datei .profiles im User-Homeverzeichnis an, falls eine solche nicht existiert. Dafür öffnen wir den Texteditor unserer Wahl. Dort definieren wir das Alias, indem wir folgende Befehlszeile in die Datei schreiben:

alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"

Damit wird der Befehl „tree“ definiert, der nach dem Speichern der .profiles den komplexen Scriptbefehl aufruft.
[singlepic id=1950 w=400]
Beim Speichern meldet sich der Editor – in diesem Fall Textmate – mit der Frage, ob er wirklich eine versteckte Datei anlegen soll. Das soll er, nach Drücken von ‚Use „.“‚ stehen alle in der .profile definierten Aliasbefehle in jeder Konsole zur Verfügung, die auf dem Mac gestartet wird.
[singlepic id=1949 w=400]
Natürlich lassen sich so auch andere Aliase für häufig verwendete, tippintensive Befehlsfolgen definieren. Im Vorfeld sollte man nur prüfen, ob der neu definierte Befehl nicht bereits existiert und so durch eine Alias-Zuweisung nicht mehr zur Verfügung steht.

Weitersagen

Zuletzt kommentiert



 7 Kommentar(e) bisher

  •  syn (29. November 2008)

    Alternativ kann man sich auch ‚tree‘ aus den MacPorts holen.

  •  Vincent (30. November 2008)

    Danke für den Tipp, gefällt.
    Was muss ich ändern, damit .hidden files nicht angezeigt werden?

  •  Richie (30. November 2008)

    Das weiss ich nicht, die Frage stellte sich mir nun auch nicht wirklich – wenn ich auf der Konsole bin, ist es in der Regel so, dass ich grade eben auch Systemfiles angezeigt haben will…

  •  Stefan (30. November 2008)

    Ich würde eher empfehlen den Alias in die Datei „~/.bashrc“ anstatt „~/.profile“ einzutragen!
    Dann braucht es auch kein Ein- und Ausloggen, damit das Alias funktioniert.

  •  rj (1. Dezember 2008)

    Ein/Ausloggen brauchts auch unter .profile nicht, das Oeffnen einer neuen Shell reicht voellig aus. .bashrc stellt *allen* Usern das Alias zur Verfuegung, schaetze ich? Das waere imo eher fuer das Fuer und Wider interessant – will ich, dass ich mit jedem angemeldeten User die Shell-Modifikationen verfuegbar habe, kann es im Gegenteil sein, dass da irgendwer damit arbeitet, der das eben nicht oder individuell will?

  •  spochtsfroind (22. Dezember 2008)

    @vincent: find . ! -name ‚\.*‘ -print | sed -e ‚s;[^/]*/;|____;g;s;____|; |;g‘
    @rj: Das mit .bashrc für alle Benutzer ist nicht unbedingt richtig. Du kannst mal „man bash“ im Terminal eingeben und unter „INVOCATION“ nachsehen, welche Profil-Dateien wann eingelesen werden

  •  abeing (27. März 2013)

    Das mit tree funktioniert wunderbar. Einfach mit macports installieren: „sudo port install tree“
    und dann in ein Verzeichnis wechseln und einfach „tree“ eingeben. -d wenn man nur ordner sehen will


Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht.



Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Werbung