Domyślną powłoką w Mac OS X jest bash
, z której ogólnie jestem zadowolony. Po prostu biorę to za pewnik. Byłoby naprawdę miło, gdyby ukończył automatycznie więcej rzeczy i słyszałem o zsh
tym dobre rzeczy . Ale tak naprawdę nie mam ochoty spędzać godzin na majstrowaniu przy ustawieniach, aby nieznacznie poprawić wykorzystanie mojego wiersza poleceń, ponieważ moje życie w wierszu poleceń nie jest takie złe.
(Rozumiem, że bash
można go również skonfigurować tak, aby autouzupełnianie przebiegało bardziej sprytnie. Nie jestem zainteresowany konfiguracją.)
Czy przejście na zsh
, nawet w niewielkiej liczbie przypadków, ułatwi moje życie? A może jest to tylko lepsza powłoka, jeśli poświęcisz czas, aby dowiedzieć się, dlaczego jest lepsza? (Przykłady też byłyby fajne :)
)
@ Rodney Amato
i @ Vulcan Eager
podają dwa dobre powody, aby odpowiednio trzymać się bash
i zmieniać zsh
. Wygląda na to, że będę musiał zbadać oba! No cóż:)
Czy jest ktoś z opinią obu stron argumentu?
Odpowiedzi:
Do codziennego użytku prawdopodobnie lepiej jest trzymać się bash i po prostu instalować zakończenie bash.
Instalacja jest dość prosta, weź bash-uzupełnianie-20060301.tar.gz z http://www.caliban.org/bash/index.shtml#completion i rozpakuj go za pomocą
następnie skopiuj plik bash_completion / bash_completion do / etc za pomocą
który poprosi cię o podanie hasła. Prawdopodobnie będziesz chciał utworzyć katalog /etc/bash_completion.d dla dodatkowych skryptów uzupełniających (na przykład mam tam skrypt ukończenia git).
Gdy to zrobisz, ostatnim krokiem jest upewnienie się, że plik .bash_profile w twoim katalogu domowym ma
w nim, aby załadować plik ukończenia po zalogowaniu.
Aby to przetestować, po prostu otwórz nowy terminal i spróbuj wykonać cvs, a powinno wyświetlić opcje cvs na liście ukończeń.
źródło
brew install bash-completion
.brew tap homebrew/versions; brew install bash-completion2
Osobiście uwielbiam Zsh.
Ogólnie rzecz biorąc, prawdopodobnie nie zauważysz różnicy między tym a bash, dopóki nie będziesz chciał szybko robić takich rzeczy jak rekurencyjne globowanie:
**/*.c
na przykład.Lub użyj aliasów sufiksów, aby powiązać określone programy z różnymi sufiksami, abyś mógł je „bezpośrednio wykonać”. Poniższy alias pozwala „uruchomić” plik źródłowy C w wierszu polecenia, po prostu wpisując
./my_program.c
- co zadziała dokładnie tak, jak podczas wpisywaniavim ./my_program.c
. (Coś w rodzaju odpowiednika podwójnego kliknięcia ikony pliku).alias -s c=vim
Lub wydrukuj nazwy zmodyfikowanych dzisiaj plików:
print *(e:age today now:)
Prawdopodobnie możesz zrobić wszystkie te rzeczy w bash, ale moje doświadczenie z Zsh jest takie, że jeśli jest coś, co chcę zrobić, prawdopodobnie znajdę to u miłośników Zsh . Uważam też, że książka „ From Bash to Z-Shell ” jest bardzo przydatna.
Zabawa umysłem zadziwiająco duża liczba opcji to także dobra zabawa!
źródło
find
lublocate
szukać rekurencyjnie. Ale kiedy pozwalasz wyszukiwaniu na inny program, tracisz granice między nazwami (chyba, że jesteś ostrożny), a także masz dostęp do wewnętrznych możliwości globowania powłoki i po prostu musisz zrobić to, co zapewnia inny program, lub potokuj wyniki przez program taki jakgrep
,awk
lubsed
(wszystkie dość złożone same w sobie).globstar
opcję bash, aby umożliwić wyszukiwanie rekurencyjne, jak wspomniano powyżej. Jednak na pewno nie było tak w przypadku, gdy napisano tę odpowiedź.glob_star_short
inzsh
możesz teraz zrobić**.c
, co jest interpretowane jako**/*.c
.zsh 5.3
i bioręcommand not found: age
zprint *(e:age today now:)
Przełącz na zsh. Będziesz miał dostęp do:
zmv
: Możesz zrobić:zmv '(*).mp3' '$1.wma'
dla tysięcy plików.zcalc
: Niezwykle wygodny kalkulator, lepszy niżbc
.zparseopts
: Jednoliniowy do analizowania dowolnych złożonych opcji podanych w skrypcie.autopushd
: Zawsze możesz zrobićpopd
po,cd
aby wrócić do poprzedniego katalogu.źródło
autoload zcalc; zcalc
(chociaż sam piszę tylko wtedy,python
gdy potrzebuję kalkulatora).zmv
izcalc
nie są dostępne po wyjęciu z pudełka. Nie jest jasne, czyzmv
to tylko zmiana nazwy plików; Myślałem, że mogłeś konwertować format. Nie wiem, co w ogóle oznacza obsługa „skrótów”. Ten post wydaje się być „użyteczny” tylko dla osób, które już znają Zsh.bash
4 został wydany zaledwie kilka miesięcy przed tą odpowiedzią.Jeśli wszystko, czego chcesz używać ZSH, to lepsze zakończenie, konfiguracja jest dość łatwa. Umieść to w swoim ~ / .zshrc:
Warto jednak sprawdzić wszystkie inne wspaniałe funkcje ZSH. Powyższy przykład da ci dość prosty monit z dobrym zakończeniem. Jeśli nie chcesz majstrować przy konfiguracjach, ale chcesz zobaczyć, co ZSH może dla Ciebie zrobić, Google dla „zshrc”, a na początek przygotujesz kilka gotowych konfiguracji.
źródło
Zsh ma konfigurację GUI konsoli. Możesz go skonfigurować dość szybko i łatwo, bez konieczności majstrowania przy plikach konfiguracyjnych. Nie sądzę, że będziesz potrzebował dużo czasu, aby go skonfigurować, prawdopodobnie 10 sekund przy użyciu samych ustawień domyślnych, więc śmiało spróbuj.
źródło
zsh
ładujesz bez powiązanych plików kropkowych. Aby zdobyć go ręcznie, spróbujautoload -U +X zsh-newuser-install; zsh-newuser-install -f
Staale mówi o programie podobnym do kreatora (CUI), który automatycznie uruchamia się przy pierwszym uruchomieniu zsh. Odpowiedz na kilka pytań, wyświetl / zmień ustawienia domyślne i skonfiguruj je dla siebie.
IBM developerWorks ma świetne zasoby dotyczące zsh.
Nie korzystałem z bardzo zaawansowanych funkcji i do tej pory nie spotkałem się z poważnymi różnicami, które powinny przeszkadzać komuś pochodzącemu z bash.
Kilka przykładów:
!? wzorzec <Tab> automatycznie uzupełni się do ostatniego polecenia w historii zgodnego wzorca. Bardzo przydatne.
Możesz skonfigurować monit w RHS. Jednym z zastosowań jest utrzymanie monitu o stałej szerokości po lewej stronie, aby wszystkie polecenia ładnie zrównały się podczas wyświetlania pwd (lub cokolwiek o zmiennej szerokości) jako monitu po prawej stronie.
Możesz przekierować dane wejściowe z wielu plików (jeszcze tego nie wypróbować): cat <plik1 <plik2 <plik3
źródło