I ❤ ~/

Vor einiger Zeit habe ich bereits einen Blog-Post über meine „.dotfiles“ geschrieben, jedoch habe ich mich damals mehr auf die Installation beschränkt und habe keine Beispiele gezeigt, so dass man den Vorteil der .dotfiles nur schwer erfassen konnte.

Außerdem benötigt man ggf. nur einige Funktionen oder Dateien um sein System an an seine Bedürfnisse anzupassen. Auf der Webseite GitHub ❤ ~/ gibt es sehr gute .dotfiles Sammlungen, welche man einfach „forken“ und anpassen und nutzen kann.

PS: wer sich bisher nicht mit „git“ auskennt, sollte sich einmal eines der folgenden interaktiven git-Tutorials anschauen:
 — try.github.io/
 — http://ift.tt/1861dZD
 — gitreal.codeschool.com/


Beispiele zu meinen .dotfiles:

Navigation:
http://ift.tt/1IfUKO0

Farben für die Kommandozeile:
http://ift.tt/1IfUL4y

Nützliche Shortcuts: z.B. date_*
http://ift.tt/1Dz1jve

Copy&Past via „getclip“ und „putclip“: http://ift.tt/1Dz1jLy

kill & pkill via z-shell: http://ift.tt/1Dz1hmZ

grep & ack: http://ift.tt/1IfULBA

git via z-shell: http://ift.tt/1Dz1hDn

„ls“-aliases: http://ift.tt/1Dz1jLI

vim » Automatisch zur letzten Position springen
http://ift.tt/1Dz1k20

vim » Schell-Suche via „#“

vim » markieren Leerzeichen am Ende der Zeile

vim » Tabs nutzen
http://ift.tt/1Dz1k26
vim » NERD Tree via „,“ + „-„
http://ift.tt/1Dz1k28

vim » Autovervollständigung via Tabulatur-Taste
http://ift.tt/1Dz1hTW


Erklärungen zu meinen .dotfiles:

.bash_profile.bashrc // .zprofile.zshrc

Wenn man sich direkt über die Konsole einloggt (ohne GUI) oder remote über ssh, dann wird die Datei: „~/.bash_profile“ (bash) bzw. „~/.zprofile“ (zsh) ausgeführt, um Ihre Shell vor der ersten Eingabeaufforderung zu konfigurieren.
 Wenn man jedoch bereits angemeldet ist und ein neues Terminalfenster z.B. in Gnome oder KDE öffnet, dann wird die „~/.bashrc“ bzw. „~/.zshrc“-Datei ausgeführt. Außerdem wird die „.[bash|z]rc“ auch ausgeführt, wenn man eine neue Bash-Instanze via „/bin/bash“ in einem Terminal ausführt. Um zu verhindern, dass unsere Einstellungen automatisierte Skripte negativ beeinflussen, führen wir die folgenden Anpassungen nur bei interaktiven Konsolen aus.

In meiner „.bashrc“-Datei ist nicht viel zu sehen, da diese Datei auf die „.bash_profile“-Datei zugreift, so dass man bei Änderungen nur eine Datei bearbeiten muss. In „.bash_profile#L19“ werden wiederum andere Dateien geladen, so dass wir die selben „Funktionen“ und „Aliases“ sowohl in der „Bash“ als auch in der „Z-Shell“ verwenden können.

.config_dotfiles

In dieser Datei kann man Einstellungen für meine .dotfiles vornehmen. Wenn du z.B. deinen Standard-User-Namen in der Variable „CONFIG_DEFAULT_USER“ hinterlegst, wird diese nicht mehr in der Shell-Prompt angezeigt.

.path

In dieser Datei kannst du Pfade zu deinen Ausführbaren Dateien einfügen, so dass du diese ohne Angabe des Pfades ausführen kannst.

Diese Datei ist nicht im öffentlichen Repository und ist via „.gitignore“ aus git verbannt, da es vertrauliche Informationen enthalten kann. z.B.: export PATH=“$HOME/utils:$PATH“

.load

In dieser Datei laden wir weitere optionale Einstellungen, welche ggf. gar nicht installiert und somit auch nicht geladen werden müssen.

.colors

Hier definieren wir einige Farben, welche dann in den folgenden Dateien verwendet werden können. z.B.: COLOR_BLACK=‚\e[0;30m‚

.exports

Variablen in Shell-Scriptes verhalten sich so ähnlich wie in JavaScript. Variablen sind Standardmäßig „global“, dass heißt selbst Variable innerhalb einer Funktion sind anschließend auch außerhalb der Funktion verfügbar. Daher verwenden wir „local“ innerhalb von Funktionen, für Variablen welche nur innerhalb der Funktion zur Verfügung steht sollen. Außerdem können wir Variablen via „export“ exportieren, so dass diese nicht nur zur Ausführungszeit, sondern anschließend ebenfalls allen Kindprozessen als Umgebungsvariable zur Verfügung stehen.

.icons

Wie die Farben werden auch die entsprechenden Icons exportiert, so dass wir diese anschließend in Funktionen etc. nutzen können.

.aliases

In dieser Datei werden Abkürzungen für komplexe Befehle oder / und Fallbacks definiert, welche anschließend als Befehl ausgeführt werden.

z.B.:
 alias starwars=’telnet towel.blinkenlights.nl‘
 alias sgrep=’grep -R -n -H -C 5 –exclude-dir={.git,.svn,CVS}‘

.bash_complete // completion.zsh

Auch wenn die „Z-Shell“ (zsh) bessere Tabcompletion bietet, kann man auch in der „Bash“ einige Tabcompletion-Features nutzen.

z.B.:

apt- [Tabulator]
apt-g [Tabulator]
apt-get [Tabulator]
apt-get i [Tabulator]
apt-get install [Tabulator] [Tabulator]
apt-get install apa [Tabulator]

.functions

Hier habe ich einige praktische Funktionen gesammelt, welche ich öfters nutze und nicht als Plugin auslagern möchte.

z.B.:
lman() -> „Open the manual page for the last command you executed“
netstat_free_local_port() -> „get one free tcp-port“
iptablesBlockIP() -> „block a IP via ‚iptables’“

Überlegungen: In der „normalen“ Programmierung nutzt man lowerCamelCase für normale Variablen / Funktionen und Methoden, jedoch sind eigentlich alle Funktionen in der Shell lowercase z.B.: whoami, updatedb, killall. Ich mich dafür entschieden mich bei neuen Funktionen und Aliases an einem Original-Befehl zu orientieren, so dass man diese nicht neu lernen muss, sondern diese via [Tabulator] nutzen kann.

.extra

Auch diese Datei ist nicht im öffentlichen Repository und ist via „.gitignore“ aus git verbannt, da es vertrauliche Informationen enthalten kann. Hier kann man alle zuvor gesetzten Variablen, Einstellungen, Funktionen überschreiben oder ergänzen.

Ähnliche Beiträge:

my dotfiles

.zshrc

Kurztipp: lokalen offenen Port finden (bash)

Originally published on Wordpress

Show your support

Clapping shows how much you appreciated Lars Moelleken’s story.