Ich bin seit einiger Zeit ein zsh-Benutzer (vor diesem tcsh und vor diesem csh). Ich bin ziemlich zufrieden damit, habe mich aber gefragt, ob es überzeugende Merkmale von bash gibt, die es in zsh nicht gibt. Und umgekehrt gibt es zsh-Features, die es in bash nicht gibt. Mein aktuelles Gefühl ist, dass bash besser ist:
- Wenn Sie damit bereits vertraut sind und keine neue Syntax erlernen möchten.
- Es wird standardmäßig auf den meisten * nix-Computern vorhanden sein, während zsh eine zusätzliche Installation sein kann.
Ich versuche hier nicht, einen religiösen Kampf zu beginnen, deshalb suche ich nur nach Merkmalen, die nur in einer der Muscheln existieren.
Antworten:
zsh ist für Vulkanier. ;-)
Im Ernst: Bash 4.0 hat einige Funktionen, die bisher nur in zsh zu finden waren, wie ** globbing:
ist äquivalent zu:
aber offensichtlich mächtiger.
Nach meiner Erfahrung ist die programmierbare Vervollständigung von bash zumindest in einigen Fällen ein bisschen besser als die von zsh (z. B. das Vervollständigen von Debian-Paketen für aptitude).
Bash muss
Alt + .
einfügen!$
zsh has expansion of all variables, so you can use e.g.
for this. zsh can also expand a command in backtics, so
yields
I find it very useful to expand
rm *
, as you can see what would be removed and can maybe remove one or two files from the commmand to prevent them from being deleted.Also nice: using the output from commands for other commands that do not read from stdin but expect a filename:
From what I read bash-completion also supports completing remote filenames over ssh if you use ssh-agent, which used to be a good reason to switch to zsh.
Aliases in zsh can be defined to work on the whole line instead of just at the beginning:
quelle
C-M-e
zu "shell-expand-line", was in meinem Fallcat `echo blubb | sed 's/u/a/'`
zucat blabb
undecho $SHELL
nach expandieren würdeecho /bin/bash
. AuchC-x *
zu "glob-expand-word", das sich erweitern würderm *
.Ich möchte darauf hinweisen, dass bash nicht standardmäßig unter FreeBSD, OpenBSD oder NetBSD installiert ist und dass es auch nicht standardmäßig unter Solaris 10 (OpenSolaris hat es als Standard) installiert ist, als ich das letzte Mal AIX und oder verwendet habe HP-UX-Server wurden ebenfalls nicht standardmäßig installiert.
Auch unter OpenSolaris ist / bin / sh NICHT bash. Es ist ksh. Das größte Problem, das ich als Software-Portierer habe, sind Leute, die annehmen, dass / bin / sh bash ist und die erweiterte bash-Syntax akzeptiert. Während dies bei den meisten Linux-Distributionen der Fall zu sein scheint, ist es anderswo nicht der Fall und es ist wirklich ärgerlich.
quelle
Obwohl ich ein Bash-Benutzer bin, finde ich eine der Funktionen von zsh ziemlich cool: RPS1.
Merken:
Stichprobe:
Bei der Verwendung von etwas wie
Sie erhalten Ihre Eingabeaufforderung auf der linken Seite und das aktuelle Verzeichnis auf der rechten Seite. Es verschwindet sogar, wenn die aktuelle Zeile zu lang wird! Dies liegt daran, dass zsh intelligent genug ist, um RPS1 eine niedrige Priorität einzuräumen.
Ein Screenshot dieses Beispiels finden Sie unter http://imgur.com/OAZhC .
quelle
Zsh hat Rechtschreibkorrektur. Wenn Sie einen Brief (oder mehr) verfehlen, wird er herausfinden, was Sie damit gemeint haben.
Es hat auch robustere Tab-Vervollständigung, die ich mag.
Zsh verfügt über ein interaktives Konfigurationsdienstprogramm, mit dem Sie festlegen können, wie Sie möchten.
Einige Geschwindigkeitstests sagen, dass zsh schneller ist, aber ich habe keinen Unterschied bemerkt.
quelle
zsh
Es gibt sogar eine Einstellung, bei der für die Verwendung mit der Dvorak-Tastatur nur ein einziger Buchstabe verwendet werden kann.Ich kenne keine Bash-Funktionen, die zsh nicht unterstützt. Das Design-Ziel von zsh scheint die Unterstützung aller Features zu beinhalten, die bash hinzufügt.
Ich benutze immer noch bash anstelle von zsh. Ich stoße selten auf überzeugende Funktionen, die zsh nicht unterstützt. Gelegentliche Probleme mit zsh im Laufe der Jahre oder auf bestimmten Systemen nicht vorhandene Probleme haben den Übergang nicht wert gemacht.
Endlich kann ich auf jedem Unix-System dieselbe Shell verwenden. Es lohnt sich nicht, diese für Funktionen zu brechen, die ich nie verwenden werde.
Die in zsh enthaltenen Funktionen, die nicht in bash enthalten sind, scheinen meistens niedlich zu sein, aber nicht diejenigen, die im Alltag eine Rolle spielen würden.
quelle
bash hat viele Funktionen, die früher nur in zsh verfügbar waren. Wie jeder Ubuntu-Benutzer in letzter Zeit festgestellt hat, können Sie jetzt auch mit Bash die 'Smart Tab-Vervollständigung' durchführen.
quelle
Prozessersetzung und erweitertes Globbing sind die beiden Funktionen, die ich am meisten vermissen würde. Die Einstellungen für die Eingabeaufforderung sind auch ziemlich cool. Sie sehen die Verschachtelungsebene, wenn Sie komplexe Anweisungen in die Befehlszeile eingeben. Durch Autoloading ist es möglich, viele Funktionen in jede Shell aufzunehmen.
quelle
Ich bin ein Fan von zsh, weil der vi-Modus unterstützt wird, aber ich stelle fest, dass er nicht sehr verbreitet ist. Ich glaube, ich habe gelesen, dass zsh gern beliebte Features aus den anderen Shells nimmt und kombiniert (also sind sowohl für bash als auch für csh spezifische Dinge in zsh verfügbar).
Jemand sagte auch, dass ich meinen Geek-Faktor mit zsh biege, aber ich kann dieses Gerücht nicht bestätigen oder leugnen.
quelle
Popularität, #bash 430 Benutzer. #zsh 123 Benutzer. Ich glaube, die zsh-Website bietet einen guten Vergleich von zsh mit anderen Shells. zsh unterstützt den vi-Modus besser.
quelle
Bash verwendet die gleiche Syntax für if und while, wie sie in / bin / sh-Skripten in der Befehlszeile verwendet werden kann.
Innerhalb von zsh unterscheidet sich die Syntax. Wenn Sie zsh verwenden, müssen Sie sich beides merken, wenn Sie eine if- oder while-Anweisung in Ihrer Befehlszeile verwenden
quelle
if [[ $test = "test" ]]; then echo "success"; else echo "failure"; fi
sowohl die Befehlszeile als auch ein Skript verwendet habe, und es hat in beiden Fällen wie erwartet funktioniert. Es sieht also so aus, als hätten Sie Ihre Fakten nicht klar.