dotfiles - oder wie man sich das Leben mit dem Terminal leichter macht

Die PowerUser unter euch, die auch des Öfteren im Terminal unterwegs sind, kennen und wissen z.B  einen Alias für einen langen Befehl zu Erstellen und zu Verwenden. Was ein Alias ist und wie man einen erstellen kann, könnt ihr hier lesen. Auch Anpassungen des Terminal Prompt, Vi etc werden gerne mal von PowerUsern vorgenommen.

Ich selber nutze auch sehr viel den Terminal um z.B den Library Ordner im User Verzeichnis sichtbar zu machen:

# chflags nohidden ~/Library

Um doppelte Einträge aus dem „Öffnen Mit“ Context Menü zu entfernen:

# /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/

LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain user;killall Finder

…und und und. Es gibt viele Anwendungsbeispiele die man schnell über das Terminal erledigen kann.

 

Was sind dotfiles

Als dotfiles sind ganz einfach die Files gemeint die mit einem Punkt . beginnen und somit bei UNIX Systemen versteckte Dateien sind. Nun gibt es verschiedene dotfiles die z.B im User Verzeichnis liegen oder erstellt werden können, in denen man Änderungen vor nehmen, und die einem das Arbeiten mit OS X oder speziell im Terminal erleichtern können. Ich werde auf diese hier noch etwas eingehen und auch einen Link zu meinem Github Repository hinterlegen in dem ihr euch meine dotfiles anschauen, aber auch gerne dort neue Dinge hinzufügen könnt.

Alle hier behandelten dotfiles liegen direkt im User-Verzeichnis ~/

 

Die .bachrc 

Die bashrc ist eine Konfigurations-Datei für die Bash, welche bei jedem Öffnen eines Terminals mitgeladen wird. In ihr kann man Abkürzungen für Befehle (also ein alias) eintragen, man verändert hier das Aussehen des Promts oder man kann zusätzliche Skripte einfügen, welche einem das Arbeiten mit der Shell erleichtern.

In der .bashrc habe ich diverse Anpassungen an dem Terminal Prompt vorgenommen. In meinen dotfiles sind alle Änderungen mit einem Kommentar versehen so das man auch erkennen was diese tun. Beispiele für Änderungen sind z.B einer längere Command History, farbige Anzeige von Dateien und Ordnern oder das Verhalten des automatischen Vervollständigen von Befehlen und Pfadangaben.

Da ich Aliase und Help-Files Separat angelegt habe, um es etwas aufgeräumter zu halten, müssen diese auch geladen werden. Am Ende meiner .bashrc importiere ich dann noch die weiteren dotfiles damit diese beim Starten des Terminal geladen werden.

 https://github.com/derjungewilde/dotfiles/blob/master/.bashrc

Die .bash_profile

Die bash_profile kann man genauso verändern und mit dem gleichen Inhalt füllen wie die bashrc. Der Unterschied liegt darin, dass die bashrc bei jedem Starten einer interaktiven Shell wie einem Terminal ausgeführt wird und die bash_profile ausschließlich beim Starten einer Login-Shell.

Will man also bei einer Login-Shell etwas einmalig ausführen, ist die bash_profile der richtige Ort. Will man, dass die Veränderungen bei jedem Start eines Terminals oder einer Konsole ausgeführt werden, ist die bashrc der richtige Ort.

In der bash_profile habe ich lediglich eine Welcome Message definiert.

https://github.com/derjungewilde/dotfiles/blob/master/.bash_profile

Die .alias

Was ein Alias ist und wie man einen anlegt habe ich hier schon mal beschrieben. Ich habe mich entschieden ein separates dotfile anzulegen in dem nur Aliase stehen. Hier habe ich natürlich die Aliase drin stehen die ich am meisten benötige. Ihr könnt gerne wenn ihr gute Ideen für einen Alias habt in meiner .alias eintragen und somit mit zum Review schicken. Lerne gerne neue dinge hinzu.

https://github.com/derjungewilde/dotfiles/blob/master/.alias

 

Die .bashrc_help

In der bashrc_help habe ich von Befehlen, bei denen ich mal eine Hilfe zur Syntax, also wie der Befehl ausgeführt werden muss hinterlegt. Im Grunde stehen da spezielle Aliase drin, die mir die Syntax oder Vorgehensweise bei Befehlen ausgeben. Wenn ich z.B nicht mehr weiß wie ich einen secure copy zu einem Server mache, gebe ich einfach help_scp ein und bekomme dann die entsprechende Ausgabe.

dotfiles - oder wie man sich das Leben mit dem Terminal leichter macht

https://github.com/derjungewilde/dotfiles/blob/master/.bashrc_help

 

Die .vimrc

In der vimrc habe ich Anpassungen für das Verhalten und aussehen der Command Line Editors Vi vorgenommen. Änderungen hier sind z.B die Anzeige von Farben, syntax hervorheben oder Zeilennummern.

https://github.com/derjungewilde/dotfiles/blob/master/.vimrc

 

Die osx_defaults

Die osx_defaults gehört nicht direkt zu den oben genannten Art von dotfiles da es keine versteckte Datei ist die das Arbeiten am Terminal vereinfacht sondern ein Sammelsurium an default write Befehlen, die in die Systemdateien eingreifen, und das Verhalten von verschiedenen Komponenten von OS X wie den Finder, iTunes oder Safari verändern.

Dinge die ich immer wieder durch default write Befehle in meinen Systemen nach einer Neuinstallation einstelle, sind z.B das bei einer Änderung von Dateiendungen keine Warnung erscheint, keine auto-preview von Bildern und PDFs in Mail usw.

Der Aufbau deines default write Befehls ist bei dem folgenden Beispiel wie folgt:

defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false

 

Default write leitet den Befehl ein.

com.apple.finder gibt an das ein Wert für die Applikation Finder verändert werden soll.

FXEnableExtensionChangeWarning gibt an welches Attribut geändert werden soll. In dem Fall das beim Ändern von Dateiendungen keine Warnung erscheint.

-bool false ändert den Wert des vorher angegeben Attributes. In dem Fall auf Nein/Aus.

Hier sind aber auch über den Befehlen eine kurze Beschreibung zu deren Funktion hinterlegt. Jede dieser Befehle können natürlich auch wieder rückgängig gemacht werden durch das erneute Ändern des Wertes oder durch einen default delete.

 

Mein Github Repository

In meinem Github Repository (Hier der Link) habe ich alle oben genannten Files liegen, und bei Änderungen von mir werden diese dort auch automatisch aktualisiert. Ihr könnt auch gerne an diesen Files mitarbeiten und neue Dinge eintragen und aktualisieren. Diese werden dann aber nicht sofort geändert, sondern ich bekomme vorher erst mal eine Nachricht und muss diese Änderungen freigeben.

Würde mich aber freuen wenn der eine oder andere noch gute Ideen zur Erweiterung dieser Files hat.

Ich setze mal voraus das ihr wisst was ihr tut und übernehme keine Verantwortung falls hierbei zu irgendwelchen Schäden an euren Systemen kommt.

  • AlexRG

    super artikel wieder einmal!

    die bash-Funktionen benötige ich zwar nicht so dringend (bisher :), aber die Übersicht zu den defaults-Befehlen ist dafür extraklasse.