Als Linux-Benutzer habe ich immer nur bash verwendet, weil es die Standardeinstellung für jede von mir verwendete Distribution war. Leute, die andere Unix-Systeme wie BSD verwenden, scheinen andere Shells viel häufiger zu verwenden. Um etwas mehr zu lernen, habe ich mich entschieden, zsh auszuprobieren.
Als Bash-Benutzer:
- Welche Funktionen werde ich vermissen?
- Und auf welche sollte ich achten?
Akzeptierte Antwort:
Für eine ausführlichere Antwort lesen Sie https://apple.stackexchange.com/questions/361870/what-are-the-practical-differences-between-bash-and-zsh/361957#361957
Auf anderen Stack Exchange-Sites gab es bereits einige Aktivitäten zu diesem Thema. Meine Erfahrung mit dem Wechsel von bash zu zsh, soweit ich mich erinnern kann (es ist Jahre her²), ist, dass ich nichts vermisst habe. Ich habe viel gewonnen; Hier sind meiner Meinung nach die einfachen zsh-spezifischen Funktionen, die ich am häufigsten verwende:
-
Die zsh-Funktion, die ich am meisten vermisse, wenn ich gelegentlich bash verwende, ist autocd:In zsh bedeutet das Ausführen eines Verzeichnisses, dorthin zu wechseln, vorausgesetzt, Sie aktivieren
autocd
Option.⁴ -
Ein weiteres sehr nützliches Feature ist das ausgefallene Globbing. Die
HieroglyphenZeichen sind etwas schwer zu merken, aber äußerst praktisch (wie in, es ist oft schneller, sie nachzuschlagen, als das entsprechendefind
zu schreiben Befehl). Einige der einfacheren Beispiele:
foo*~*.bak
=alle Übereinstimmungen fürfoo*
außer denen, die mit*.bak
übereinstimmen
foo*(.)
=nur reguläre Dateien, diefoo*
entsprechen
foo*(/)
=nur Verzeichnisse, diefoo*
entsprechen
foo*([email protected])
=nur baumelnde symbolische Links, diefoo*
entsprechen
foo*(om[1,10])
=die 10 neuesten Dateien, die mitfoo*
übereinstimmen
foo*(Lm+1)
=nur Dateien mit einer Größe> 1 MB
dir/**/foo*
=foo*
im Verzeichnisdir
und alle seine Unterverzeichnisse, rekursiv⁴ -
Für ausgefallene Umbenennungen ist die Datei
zmv
eingebaut kann praktisch sein. Zum Beispiel, um jedefile
infile.bak
:zmv -C '(*)(#q.)' '$1.bak'
-
Sowohl bash als auch zsh haben ein anständiges Vervollständigungssystem, das explizit aktiviert werden muss (
. /etc/bash_completion
oderautoload -U compinit; compinit
). Zsh ist viel konfigurierbarer und im Allgemeinen ausgefallener.
Wenn Sie zsh ohne .zshrc
ausführen , wird ein interaktives Menü gestartet, in dem Sie Konfigurationsoptionen auswählen können. (Einige Distributionen können dies deaktivieren; führen Sie in diesem Fall autoload zsh-newuser-install; zsh-newuser-install
aus .) Ich empfehle, die empfohlenen Verlaufsoptionen zu aktivieren, die Vervollständigung („im neuen Stil“) einzuschalten und die „allgemeinen Shell-Optionen“ mit Ausnahme von beep
einzuschalten . Konfigurieren Sie später weitere Optionen, sobald Sie sie entdecken.
²Zu der Zeit war die programmierbare Vervollständigung das Killer-Feature von zsh, aber bash erwarb es bald danach.
⁴Funktionen, die bash nur in Version 4 erworben hat (also zum Zeitpunkt der Veröffentlichung dieser Antwort nicht allgemein verfügbar waren und auf der vom System bereitgestellten bash unter macOS nicht verfügbar sind) sind in kleinerer Schrift.