Die Standard-Shell in Mac OS X ist bash
, die ich im Allgemeinen gerne verwende. Ich halte das für selbstverständlich. Es wäre wirklich schön, wenn es automatisch mehr Sachen vervollständigen würde , und ich habe zsh
in dieser Hinsicht gute Dinge darüber gehört . Aber ich habe nicht wirklich die Neigung, stundenlang an Einstellungen herumzuspielen, um meine Befehlszeilennutzung um einen winzigen Betrag zu verbessern, da mein Leben in der Befehlszeile nicht so schlecht ist.
(Soweit ich weiß, bash
kann es auch so konfiguriert werden, dass es intelligenter automatisch vervollständigt wird. Es ist die Konfiguration, an der ich nicht besonders interessiert bin.)
Wird der Wechsel zu zsh
, auch in wenigen Fällen, mein Leben leichter machen? Oder ist es nur eine bessere Hülle, wenn Sie sich die Zeit nehmen, um zu erfahren, warum es besser ist? (Beispiele wären auch schön :)
)
@ Rodney Amato
& @ Vulcan Eager
geben zwei gute Gründe an, sich daran zu halten bzw. zu bash
wechseln zsh
. Sieht so aus, als müsste ich beides untersuchen! Naja:)
Gibt es jemanden mit einer Meinung von beiden Seiten des Arguments?
Antworten:
Für den gelegentlichen Gebrauch ist es wahrscheinlich besser, sich an die Bash zu halten und nur die Bash-Fertigstellung zu installieren.
Die Installation ist ziemlich einfach. Holen Sie sich das Bash-Completion-20060301.tar.gz von http://www.caliban.org/bash/index.shtml#completion und extrahieren Sie es mit
Kopieren Sie dann die Datei bash_completion / bash_completion nach / etc mit
Hier werden Sie zur Eingabe Ihres Passworts aufgefordert. Sie werden wahrscheinlich ein Verzeichnis /etc/bash_completion.d für zusätzliche Abschlussskripte erstellen wollen (zum Beispiel habe ich dort das Git-Abschlussskript).
Sobald dies erledigt ist, müssen Sie im letzten Schritt sicherstellen, dass die Datei .bash_profile in Ihrem Home-Verzeichnis vorhanden ist
darin, um die Abschlussdatei zu laden, wenn Sie sich anmelden.
Um es zu testen, öffnen Sie einfach ein neues Terminal und versuchen Sie, es auf Lebensläufen abzuschließen. Es sollte Ihnen die Lebenslauf-Optionen in der Liste der Abschlüsse anzeigen.
quelle
brew install bash-completion
.brew tap homebrew/versions; brew install bash-completion2
Ich persönlich liebe zsh.
Im Allgemeinen werden Sie den Unterschied zwischen Bash und Bash wahrscheinlich erst bemerken, wenn Sie schnell Dinge wie rekursives Globbing ausführen möchten:
**/*.c
beispielsweise.Oder verwenden Sie Suffix-Aliase, um bestimmte Progs mit verschiedenen Suffixen zu verknüpfen, sodass Sie sie direkt "ausführen" können. Mit dem folgenden Alias können Sie eine C-Quelldatei an der Eingabeaufforderung durch einfaches Eingeben "ausführen"
./my_program.c
- was genau so funktioniert, als ob Sie es eingegeben hättenvim ./my_program.c
. (Entspricht dem Doppelklick auf das Symbol einer Datei.)alias -s c=vim
Oder drucken Sie die Namen der heute geänderten Dateien aus:
print *(e:age today now:)
Sie können wahrscheinlich all diese Dinge in Bash tun, aber meine Erfahrung mit zsh ist, dass ich es wahrscheinlich bei zsh-Liebhabern finden kann, wenn ich etwas tun möchte . Ich finde auch das Buch ' From Bash to Z-Shell ' wirklich nützlich.
Es macht auch Spaß, mit dem Verstand zu spielen, der unglaublich viele Optionen bietet!
quelle
find
oderlocate
rekursiv suchen. Sobald Sie jedoch ein anderes Programm die Suche durchführen lassen, verlieren Sie die Grenzen zwischen den Namen (sofern Sie nicht vorsichtig sind) sowie den Zugriff auf die internen Globbing-Fähigkeiten der Shell und müssen im Grunde entweder mit dem auskommen, was das andere Programm bietet. oder leiten Sie seine Ausgabe durch ein Programm wiegrep
,awk
odersed
(alle ziemlich komplex für sich).globstar
Option in Bash festlegen , um eine rekursive Suche wie oben erwähnt zu ermöglichen. Ziemlich sicher, dass dies nicht der Fall war, als diese Antwort geschrieben wurde.glob_star_short
inzsh
können Sie jetzt tun**.c
, was als interpretiert wird**/*.c
.zsh 5.3
und bekommecommand not found: age
mitprint *(e:age today now:)
Wechseln Sie zu zsh. Sie haben Zugriff auf:
zmv
: Sie können tun:zmv '(*).mp3' '$1.wma'
für Tausende von Dateien.zcalc
: Extrem komfortabler Taschenrechner, besser alsbc
.zparseopts
: Einzeiler zum Parsen beliebiger komplexer Optionen für Ihr Skript.autopushd
: Sie können jederzeitpopd
nachhercd
zu Ihrem vorherigen Verzeichnis zurückkehren.quelle
autoload zcalc; zcalc
(obwohl ich selbst nur tippe,python
wenn ich einen Taschenrechner brauche).zmv
undzcalc
sind nicht sofort verfügbar. Es ist nicht klar, dasszmv
nur Dateien umbenannt werden. Ich dachte, Sie hätten das Format möglicherweise konvertiert. Ich weiß nicht, was "Hashes" -Unterstützung überhaupt bedeutet. Dieser Beitrag scheint nur für Leute "nützlich" zu sein, die zsh bereits kennen.bash
4 wurde nur wenige Monate vor dieser Antwort veröffentlicht.Wenn Sie ZSH nur für eine bessere Vervollständigung verwenden möchten, ist die Konfiguration ziemlich einfach. Platziere dies in deinem ~ / .zshrc:
Es lohnt sich jedoch, alle anderen großartigen Funktionen des ZSH zu prüfen. Das obige Beispiel gibt Ihnen eine ziemlich einfache Eingabeaufforderung mit guter Fertigstellung. Wenn Sie nicht mit Konfigurationen herumspielen möchten, aber sehen möchten, was ZSH für Sie tun kann, Google für "zshrc", und Sie werden einige einsatzbereite Konfigurationen für den Einstieg bereitstellen.
quelle
zsh hat eine Konsolen-GUI-Konfigurationssache. Sie können es ziemlich schnell und einfach einrichten, ohne mit Konfigurationsdateien herumspielen zu müssen. Ich glaube nicht, dass Sie viel Zeit brauchen werden, um es einzurichten, wahrscheinlich 10 Sekunden, wenn Sie nur die Standardeinstellungen verwenden. Probieren Sie es also aus.
quelle
zsh
ohne zugehörige Punktedateien laden. Um es manuell zu bekommen, versuchen Sieautoload -U +X zsh-newuser-install; zsh-newuser-install -f
Staale spricht von einem Assistenten-ähnlichen Programm (CUI), das beim ersten Ausführen von zsh automatisch ausgeführt wird. Beantworten Sie einfach einige Fragen, zeigen / ändern Sie die Standardeinstellungen und die für Sie konfigurierten.
IBM developerWorks verfügt über hervorragende Ressourcen für zsh.
Ich habe keine sehr fortgeschrittenen Funktionen verwendet und bin bisher nicht auf ernsthafte Unterschiede gestoßen, die jemanden behindern sollten, der von Bash kommt.
Einige Beispiele:
!? pattern <Tab> wird automatisch zum letzten Befehl im Verlaufsabgleichsmuster vervollständigt. Sehr hilfreich.
Sie können eine Eingabeaufforderung auf der rechten Seite konfigurieren. Eine Verwendung besteht darin, eine Eingabeaufforderung mit fester Breite auf der linken Seite beizubehalten, damit alle Befehle gut ausgerichtet sind, während das pwd (oder etwas mit variabler Breite) als Eingabeaufforderung auf der rechten Seite angezeigt wird.
Sie können Eingaben aus mehreren Dateien umleiten (dies muss noch versucht werden): cat <file1 <file2 <file3
quelle