Zsh: Unterschied zwischen den Versionen
Boenki (Diskussion | Beiträge) wikikonformer |
|||
Zeile 1: | Zeile 1: | ||
Um mit dem Betriebssystem zu interagieren, und teilweise auch, | Um mit dem Betriebssystem zu interagieren, und teilweise auch, | ||
damit das Betriebssystem selbst arbeiten kann, | damit das Betriebssystem selbst arbeiten kann, | ||
Zeile 11: | Zeile 9: | ||
Princeton University geschrieben wurde. | Princeton University geschrieben wurde. | ||
=Vorteile= | ==Vorteile== | ||
Die Zsh hat viele Vorteile gegenüber anderen Shells: | Die Zsh hat viele Vorteile gegenüber anderen Shells: | ||
* | *Schneller | ||
*Verbesserte, | *Verbesserte, intelligente Tab Vervollständigung | ||
*Verbessertes Globbing | *Verbessertes Globbing | ||
*Erweiterte Variablen/Array-Handhabung | *Erweiterte Variablen/Array-Handhabung | ||
*Rechtschreibprüfung | *Rechtschreibprüfung | ||
*Nachträglich ladbare Module | *Nachträglich ladbare Module | ||
* | *Individualisierbarer Prompt | ||
* | *Sehr flexible induvidualisierbarer | ||
* | *Eine verbesserte History | ||
=Installation= | ==Installation== | ||
Die Zsh befindet sich in [extra] und lässt sich mit | Die Zsh befindet sich in [extra] und lässt sich mit | ||
pacman -S zsh | pacman -S zsh | ||
Zeile 32: | Zeile 30: | ||
pacman -S grml-zsh-config | pacman -S grml-zsh-config | ||
=Optimal : Zsh als Standard Shell einstellen= | ==Optimal : Zsh als Standard Shell einstellen== | ||
Als erstes sollte man den vollständigen Pfad der ZSH herausfinden: | Als erstes sollte man den vollständigen Pfad der ZSH herausfinden: | ||
which zsh | which zsh | ||
Zeile 40: | Zeile 38: | ||
chsh -s /bin/zsh | chsh -s /bin/zsh | ||
=Hinweise zu der GRML Konfiguration= | ==Hinweise zu der GRML Konfiguration== | ||
Die .zshrc sollte nicht bearbeitet werden, für eigene Einstellungen verwendet | Die .zshrc sollte nicht bearbeitet werden, für eigene Einstellungen verwendet | ||
man die Datei '''.zshrc.local''' | man die Datei '''.zshrc.local''' | ||
Zeile 50: | Zeile 48: | ||
http://grml.org/zsh/grml-zsh-refcard.pdf | http://grml.org/zsh/grml-zsh-refcard.pdf | ||
=History= | ==History== | ||
Die History der ZSH ist sehr mächtig. Vielleicht kennst du das Problem, | Die History der ZSH ist sehr mächtig. Vielleicht kennst du das Problem, | ||
dass du mehrere Shells offen hast, und du dann den Befehl $foo1, den du | dass du mehrere Shells offen hast, und du dann den Befehl $foo1, den du | ||
Zeile 61: | Zeile 59: | ||
=Globbing= | ==Globbing== | ||
Jeder verwendet es, aber nicht jeder ist sich dessen bewusst: | Jeder verwendet es, aber nicht jeder ist sich dessen bewusst: | ||
Wenn man z.B "ls *txt" ausführt, hat man Globbing verwendet. | Wenn man z.B "ls *txt" ausführt, hat man Globbing verwendet. | ||
Zeile 102: | Zeile 100: | ||
print **/*(g:users:) # Recursively match all files that are owned by group 'users' | print **/*(g:users:) # Recursively match all files that are owned by group 'users' | ||
echo /proc/*/cwd(:h:t:s/self//) # Analogous to >ps ax | awk '{print }'< | echo /proc/*/cwd(:h:t:s/self//) # Analogous to >ps ax | awk '{print }'< | ||
=Hashes= | |||
==Hashes== | |||
Eine weitere Funktion sind die Hashes. | Eine weitere Funktion sind die Hashes. | ||
Mit ihnen kann man sich viel lästige Tipparbeit ersparen. | Mit ihnen kann man sich viel lästige Tipparbeit ersparen. | ||
Zeile 113: | Zeile 112: | ||
Wechseln des Verzeichnisses aus. | Wechseln des Verzeichnisses aus. | ||
=GRML-Tipp: Batterie= | ==GRML-Tipp: Batterie== | ||
Die GRML Konfiguration bietet auch die Anzeige des Ladestandes von der | Die GRML Konfiguration bietet auch die Anzeige des Ladestandes von der | ||
Batterie an. | Batterie an. | ||
Durch Einfügen von BATTERY=1 in die .zshrc.local dann dieses Feature aktiviert werden. | Durch Einfügen von BATTERY=1 in die .zshrc.local dann dieses Feature aktiviert werden. | ||
=Links= | ==Links== | ||
http://de.wikipedia.org/wiki/Zsh | http://de.wikipedia.org/wiki/Zsh | ||
Version vom 12. Juli 2010, 12:17 Uhr
Um mit dem Betriebssystem zu interagieren, und teilweise auch, damit das Betriebssystem selbst arbeiten kann, bedarf es eines Interpreter-Programms, dass die eingegebenen Befehle an das System weiterreicht. Unter Unix, und Unix-verwandten Systemen wird dieser Kommandozeileninterpreter Shell genannt. Unter Arch ist diese Shell standardmäßig die bash. Eine Alternative ist die sog. Zsh ("Z-Shell"), die 1990 von Paul Falstad Princeton University geschrieben wurde.
Vorteile
Die Zsh hat viele Vorteile gegenüber anderen Shells:
- Schneller
- Verbesserte, intelligente Tab Vervollständigung
- Verbessertes Globbing
- Erweiterte Variablen/Array-Handhabung
- Rechtschreibprüfung
- Nachträglich ladbare Module
- Individualisierbarer Prompt
- Sehr flexible induvidualisierbarer
- Eine verbesserte History
Installation
Die Zsh befindet sich in [extra] und lässt sich mit
pacman -S zsh
installlieren. Weil die Standard Konfiguration ziemlich puristisch ist, kann man auf eine fertige zurückgreifen, die von der Linux Distribution grml zur Verfügung gestellt wird. Inzwischen ist diese Konfiguration ebenfalls in [extra] zu finden:
pacman -S grml-zsh-config
Optimal : Zsh als Standard Shell einstellen
Als erstes sollte man den vollständigen Pfad der ZSH herausfinden:
which zsh
Um die Standardshell für den aktuellen Nutzer zu wechseln, verwendet man folgenden Befehl:
chsh -s /bin/zsh
Hinweise zu der GRML Konfiguration
Die .zshrc sollte nicht bearbeitet werden, für eigene Einstellungen verwendet man die Datei .zshrc.local Falls man einige Einstellungen verändern will, kann man diese auch in .zshrc.pre schreiben, die grml Einstellungen werden dann überschrieben. Befehle für eine Login Shell kann man unter .zprofile vornehmen. Einige Hinweise zur GRML Konfiguration findet man hier : http://grml.org/zsh/grmlzshrc.html http://grml.org/zsh/grml-zsh-refcard.pdf
History
Die History der ZSH ist sehr mächtig. Vielleicht kennst du das Problem, dass du mehrere Shells offen hast, und du dann den Befehl $foo1, den du in der ersten Konsole eingegeben hast, auch in die zweiten Shell haben willst. Die ZSH liest die History immer wieder neu ein, d.h du musst nur einmal Enter drücken und die History von der ersten Konsole ist auch auf der zweiten verfügbar. Es kann auch eine History von nur einem einzelnen Befehl aufgerufen werden. Nach Eingabe des Befehles reicht ein Drücken der PfeilAuf oder Ab Taste aus.
Globbing
Jeder verwendet es, aber nicht jeder ist sich dessen bewusst: Wenn man z.B "ls *txt" ausführt, hat man Globbing verwendet. Globbing von der Zsh ist aber noch sehr viel mächtiger: H-Glob gibt Auskunft über die verschiedenen Möglichkeiten:
/ directories . plain files @ symbolic links = sockets p named pipes (FIFOs) * executable plain files (0100) % device files (character or block special) %b block special files %c character special files r owner-readable files (0400) w owner-writable files (0200) x owner-executable files (0100) A group-readable files (0040) I group-writable files (0020) E group-executable files (0010) R world-readable files (0004) W world-writable files (0002) X world-executable files (0001) s setuid files (04000) S setgid files (02000) t files with the sticky bit (01000)
print *(m-1) # Files modified up to a day ago print *(a1) # Files accessed a day ago print *(@) # Just symlinks print *(Lk+50) # Files bigger than 50 kilobytes print *(Lk-50) # Files smaller than 50 kilobytes print **/*.c # All *.c files recursively starting in $PWD print **/*.c~file.c # Same as above, but excluding 'file.c' print (foo|bar).* # Files starting with 'foo' or 'bar' print *~*.* # All Files that do not contain a dot chmod 644 *(.^x) # make all plain non-executable files publically readable print -l *(.c|.h) # Lists *.c and *.h print **/*(g:users:) # Recursively match all files that are owned by group 'users' echo /proc/*/cwd(:h:t:s/self//) # Analogous to >ps ax | awk '{print }'<
Hashes
Eine weitere Funktion sind die Hashes. Mit ihnen kann man sich viel lästige Tipparbeit ersparen. Ein neuer Hash wird folgendermaßen definiert:
hash -d foo=/path/to/directory.
Anstatt cd /path/to/directory muss man jetzt nur noch cd ~foo ausführen. Für Superfaule : ein ~foo reicht bei gehashten Verzeichnissen sogar auch zum Wechseln des Verzeichnisses aus.
GRML-Tipp: Batterie
Die GRML Konfiguration bietet auch die Anzeige des Ladestandes von der Batterie an. Durch Einfügen von BATTERY=1 in die .zshrc.local dann dieses Feature aktiviert werden.
Links
http://de.wikipedia.org/wiki/Zsh