Jestem użytkownikiem Zsh od dłuższego czasu (przed tym tcsh i przed tamtym csh). Jestem z tego całkiem zadowolony, ale zastanawiałem się, czy są jakieś atrakcyjne funkcje bash, które nie istnieją w Zsh. I odwrotnie, są funkcje zsh, które nie istnieją w bash. Uważam, że bash jest lepszy:
- Jeśli znasz go już i nie chcesz się uczyć nowej składni.
- Będzie domyślnie istniał na większości wszystkich * nix maszyn, podczas gdy zsh może być dodatkową instalacją.
Nie próbuję tutaj rozpoczynać bitwy religijnej, dlatego właśnie szukam funkcji, które istnieją tylko w jednej z powłok.
Odpowiedzi:
zsh jest dla wulkanów. ;-)
Poważnie: bash 4.0 ma pewne funkcje, które wcześniej znajdowały się tylko w zsh, takie jak ** globbing:
jest równa:
ale oczywiście mocniejszy.
Z mojego doświadczenia wynika, że programowalne zakończenie bash działa nieco lepiej niż zsh, przynajmniej w niektórych przypadkach (na przykład wypełnianie pakietów debiana dla aptitude).
bash musi
Alt + .
wstawić!$
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:
źródło
C-M-e
aby „shell-Expand-line”, która będzie rozwijaćcat `echo blubb | sed 's/u/a/'`
sięcat blabb
iecho $SHELL
abyecho /bin/bash
w moim przypadku. RównieżC-x *
do „glob-expand-word”, który by się rozwinąłrm *
.Chciałbym zaznaczyć, że bash nie jest domyślnie instalowany na FreeBSD, OpenBSD lub NetBSD, a także nie jest domyślnie instalowany na Solarisie 10 (OpenSolaris ma go domyślnie), ostatnim razem, gdy użyłem AIX, i lub Serwery HP-UX też nie zostały domyślnie zainstalowane.
Również w OpenSolaris / bin / sh NIE jest bash. To jest ksh. Największe problemy, jakie mam jako programista, to ludzie, którzy zakładają, że / bin / sh to bash i że zaakceptuje rozszerzoną składnię bash. Chociaż wydaje się, że tak jest w przypadku większości dystrybucji Linuksa, nie jest tak w żadnym innym przypadku i jest to naprawdę denerwujące.
źródło
Chociaż jestem użytkownikiem bash, uważam jedną z funkcji zsh za całkiem fajną: RPS1.
Zapamiętaj:
Próba:
Podczas korzystania z czegoś takiego
Otrzymasz monit po lewej stronie, a bieżący katalog zostanie przesunięty w prawo. Znika nawet, gdy bieżąca linia staje się zbyt długa! To dlatego, że zsh jest wystarczająco inteligentny, aby nadać RPS1 niski priorytet.
Zrzut ekranu tego przykładu można zobaczyć na stronie http://imgur.com/OAZhC .
źródło
Zsh ma korektę pisowni. Jeśli nie masz listu (lub więcej), zrozumiesz, co miałeś na myśli.
Ma również bardziej niezawodne uzupełnianie tabulatorów, co lubię.
Zsh ma interaktywne narzędzie do konfiguracji, aby ustawić go tak, jak lubisz.
Niektóre testy prędkości wskazują, że zsh jest szybszy, ale nie zauważyłem żadnej różnicy.
źródło
zsh
ma nawet ustawienie pozwalające na pomyłki „jednej litery” dla użycia klawiatury Dvorak.Nie znam żadnych funkcji bash, które nie obsługuje Zsh. Wydaje się, że celem projektu zsh jest obsługa wszystkich funkcji dodawanych przez bash.
Nadal używam bash zamiast zsh. Rzadko spotykam przekonujące funkcje obsługiwane przez Zsh, których bash nie obsługuje. Sporadyczne problemy z zsh na przestrzeni lat lub jego brak w niektórych systemach, sprawiły, że przejście na nie było warte.
Mogę w końcu użyć tej samej powłoki na każdym systemie Unix, nie warto jej łamać dla funkcji, których nigdy nie użyję.
Funkcje obecne w Zsh, które nie są obecne w bash, wydają się przeważnie urocze, ale nie takie, które miałyby znaczenie na co dzień.
źródło
bash ma wiele funkcji, które wcześniej były tylko w Zsh. Możesz mieć teraz także „inteligentne uzupełnianie kart” z bash, jak odkrył to każdy niedawny użytkownik ubuntu.
źródło
Zastępowanie procesów i rozszerzone globowanie to dwie cechy, za którymi najbardziej tęsknię. Ustawienia zachęty są również całkiem fajne - sprawdzanie poziomu zagnieżdżania podczas pisania złożonych instrukcji w wierszach poleceń. Automatyczne ładowanie umożliwia włączenie wielu funkcji do każdej powłoki.
źródło
Jestem fanem Zsh ze względu na obsługę trybu vi, ale odkrywam, że nie jest on powszechnie używany. Myślę, że czytam, że zsh lubi pobierać popularne funkcje z innych powłok i łączyć je (więc rzeczy specyficzne dla bash i rzeczy specyficzne dla csh są dostępne w zsh).
Ktoś powiedział również, że wyginam czynnik maniaków przy użyciu zsh, ale nie mogę potwierdzić ani zaprzeczyć tej plotce.
źródło
Popularność, #bash 430 użytkowników. #zsh 123 użytkowników. Wierzę, że strona zsh ma dobre porównanie zsh z innymi powłokami. Zsh ma lepszą obsługę trybu vi.
źródło
Bash używa tej samej składni dla if i while, która może być użyta w skryptach / bin / sh w linii poleceń.
W obrębie Zsh składnia jest inna. Aby skutecznie korzystać z zsh, musisz pamiętać o obu, jeśli używasz instrukcji if lub while w linii poleceń
źródło
if [[ $test = "test" ]]; then echo "success"; else echo "failure"; fi
zarówno wiersza polecenia, jak i skryptu, i działało zgodnie z oczekiwaniami w obu przypadkach. Wygląda na to, że nie masz jasnych faktów.