3 dobre powody, aby zastąpić Bash Zsh

3 dobre powody, aby zastąpić Bash Zsh

Zsh znacząco poprawia pracę w terminalu dzięki wtyczkom, inteligentnym uzupełnieniom i zaawansowanej edycji poleceń, eliminując uciążliwości związane z Bash.

Jeśli często korzystasz z terminala, z pewnością odczuwasz ból związany z pisaniem długich poleceń. Uzupełnianie w Bashu nie jest skuteczne, ścieżki do plików są męczące do pisania, a literówki są ciągłą udręką. Mam trzy dobre powody, dla których Zsh rozwiązuje te problemy i poprawia wydajność pracy w terminalu.

Ogromny ekosystem wtyczek do rozwiązania tysięcy problemów

Korzystanie z powłok w ich domyślnym stanie jest męczące, ponieważ zazwyczaj brakuje im przydatnych i ergonomicznych funkcji, które są nam potrzebne, aby być naprawdę produktywnym. Na przykład, pisanie długich poleceń może być pracochłonne i bezlitosne, gdy popełniasz błędy. Potrzebujemy sposobu na funkcjonalne zwiększenie możliwości naszych podstawowych powłok oraz zapewnienie im cech, które znacznie ułatwią ich użytkowanie.

Aby dodać dodatkowe możliwości naszym powłokom, jednym z podejść jest bezpośrednia edycja plików konfiguracyjnych powłoki i dodanie niestandardowych funkcji użytkowych. Na przykład możesz wstawić aliasy lub funkcje do pliku konfiguracyjnego powłoki, a staną się one trwałymi dodatkami do twojego środowiska powłoki.

foo() {
 echo "To jest funkcja foo"
}

Poprzedni przykład stworzy wielokrotnego użytku funkcję użytkową o nazwie "foo", która wyświetli jedynie podstawową wiadomość; możesz używać jej jak polecenia. Jednak edytowanie powłoki jest powszechne i wręcz konieczne dla osobistych narzędzi, jest to jednak bardzo ręczne podejście i potencjalnie wymaga więcej pracy, niż jesteś w stanie zaakceptować w dłuższej perspektywie.

Innym (i często lepszym) podejściem jest korzystanie z wtyczek. Wtyczki to po prostu pakiety składające się z funkcji powłoki, napisane, przetestowane i opublikowane przez kogoś innego, więc cała ciężka praca jest już zrobiona za ciebie. Aby zainstalować wtyczki, zazwyczaj używasz frameworka powłoki - który sam w sobie składa się z funkcji powłoki. Framework powłoki zainicjuje twoje środowisko powłoki, ułatwi instalację i aktywację wtyczek i często zapewnia dodatkowe funkcje.

Zsh była pierwszą powłoką, która ustanowiła odpowiedni ekosystem wtyczek z frameworkiem znanym jako Oh My Zsh. Po wielu latach ekosystem Zsh dojrzał do punktu, w którym istnieją tysiące wtyczek, motywów i frameworków. Wiele osób często poleca Oh My Zsh, ale ja preferuję Zinit za jego skoncentrowanie na szybkim czasie uruchamiania, który wynosi zaledwie kilka milisekund.

Bez względu na to, który framework wybierzesz, istnieje mnóstwo wtyczek Zsh do wyboru, wszystkie rozwiązują problem, który ktoś kiedyś miał. Spędzenie chwili na przeszukiwaniu wtyczek może przynieść znaczące długoterminowe zyski efektywności, co czyni to wartą inwestycją. Zamiast przeszukiwać YouTube, często przeszukuję wtyczki, zamieniając prokrastynację na wzrost produktywności.

Inteligentna pomoc w poleceniach z doskonałymi uzupełnieniami

Jak wspomniano wcześniej, pisanie długiego polecenia tylko po to, aby powłoka zwróciła błąd, jest czasochłonne i frustrujące. Potrzebujemy barier, aby utrzymać nasze niezdarne ludzkie działania na właściwej drodze, a dokładnie to robią uzupełnienia powłoki. Kiedy wpisujesz polecenie i naciskasz klawisz Tab, powłoka wyświetli wszystkie dostępne opcje.

Bash zapewnia uzupełnienia powłoki, ale proces wyboru jest uparty, często wymaga ode mnie naciśnięcia klawisza tab 10 do 15 razy, aby ukończyć jedną opcję. Podczas gdy uzupełnienia Zsh są lepsze domyślnie, wtyczki i frameworki znacznie zwiększają ich możliwości.

Poprzednie obrazy pokazują uzupełnienia Zsh wzmocnione przez wtyczkę, która korzysta z narzędzia fzf. Fzf to niezastąpione narzędzie, które pozwala na ograniczenie wyborów w czasie rzeczywistym przy użyciu wyszukiwania przybliżonego. Gdy używasz go z uzupełnieniami, twoje wejście nie musi być całkowicie poprawne, a fzf nadal pomoże ci znaleźć odpowiednią opcję. To przydatne, gdy wpisujesz dziesiątki poleceń w szybkim tempie i nie poświęcasz czasu na to, aby być w 100% pewnym pisowni.

Tworzenie poleceń jest czysto praktyczne i nie jest dziełem sztuki, więc funkcje powłoki powinny być ukierunkowane na uczynienie tego tak efektywnym, jak to możliwe. Zsh robi to doskonale poprzez doskonałe wsparcie dla uzupełniania poleceń. Nie mógłbym używać powłoki przez dłuższy czas, jeśli system uzupełnień nie odpowiadałby ofercie Zsh.

Inteligentna edycja linii poleceń przy użyciu Zsh

Edytor

Linia poleceń nie sprowadza się tylko do wprowadzania komend; często chodzi także o ich edytowanie. Zarówno Zsh, jak i Bash mają kompetentne edytory linii poleceń, które zapewniają zaawansowane narzędzia do manipulowania tekstem komendy przed jej wprowadzeniem.

Bash korzysta z GNU Readline, ogólnego edytora linii poleceń używanego przez wiele różnych projektów oprogramowania. Pozwala on na edytowanie linii poleceń przy użyciu skrótów klawiszowych Emacs lub Vi, co sprawia, że edytowanie komend przypomina korzystanie z edytora tekstu. Readline jest konfigurowalny, ale nie jest rozszerzalny bez pisania niestandardowego kodu w języku C. Edytor Linii Zsh (ZLE) stosuje inne podejście, ponieważ jest rozszerzalny za pomocą skryptów powłoki. Rozszerzalność ZLE umożliwia potężne funkcje wspierane przez społeczność, takie jak podświetlanie składni i niestandardowe widżety, oprócz wsparcia dla skrótów klawiszowych w stylu Emacs i Vi.

Widżety (moim zdaniem) to miejsce, w którym ZLE naprawdę błyszczy. Widżet to funkcja powłoki, która zazwyczaj jest aktywowana za pomocą skrótu klawiszowego. Widżety mają dostęp do tekstu linii poleceń i pozwalają na wykonanie dowolnej komendy powłoki przed zaakceptowaniem polecenia. Otwiera to świat możliwości, aby uczynić Twoją pracę nieco mniej uciążliwą.

Moje dwa ulubione widżety sprawiają, że zmiany w Git (narzędzie do śledzenia kodu źródłowego) i wybieranie plików stają się mniej uciążliwe.

Często używam Gita do śledzenia i przeglądania zmian w kodzie źródłowym. Mój pierwszy widżet upraszcza komendę zatwierdzania. Dokonywanie zatwierdzeń w Gicie to częste zadanie, a wpisywanie całej komendy za każdym razem, łącznie z opisowym komunikatem, staje się męczące:

git commit --all --message "make lots of bugs"

Po wpisaniu "git commit --all --message" dziesiątki razy, powtarzalność zaczyna mnie męczyć. Dlatego używam następującego widżetu.

git_commit_with_message() {
 local msg=$BUFFER
 BUFFER="git commit --all --message \"${msg}\""
 zle accept-line
}
zle -N git_commit_with_message
bindkey "\e^M" git_commit_with_message

Wstawiam powyższą funkcję powłoki do mojego pliku .zshrc i go przeładowuję. Mogę wtedy dokonać zatwierdzenia w Gicie, wpisując opisowy komunikat i naciskając Alt+Enter. Widżet automatycznie opakuje to w komendę "git commit --all --message" za mnie. To oszczędza mi dużo energii na dłuższą metę.

Drugi widżet wybiera ścieżkę do systemu plików za pomocą menedżera plików, zamiast ją wpisywać. Wpisywanie długich ścieżek do plików jest uciążliwe, szczególnie podczas nawigowania w głębokich strukturach katalogów.

yazi_pick_path() {
 local file=$(yazi --chooser-file=>(cat))

 [[ -z "$file" ]] && zle redisplay && return

 LBUFFER+="\"$file\""
 zle redisplay
}

zle -N yazi_pick_path
bindkey '\ey' yazi_pick_path

Teraz, gdy wpisuję komendę i potrzebuję ścieżki, mogę nacisnąć Alt+Y, a w terminalu otworzy się okno menedżera plików Yazi. Gdy wybiorę plik lub katalog i naciśniesz enter, Yazi wstawi cytowaną ścieżkę do linii poleceń za mnie.

ZLE jest potężny

Te widżety pozwalają mi usunąć pracochłonne elementy z wprowadzania poleceń. System ZLE jest potężny, a z odrobiną wiedzy na temat skryptów powłoki można sprawić, że trudne polecenia będą znacznie łatwiejsze do wpisania. To jedna z tych funkcji, która sprawia, że Zsh wydaje się naprawdę rozszerzalny.

Chociaż Bash ma popularne frameworki (Bash-it i Oh My Bash), które oferują przydatne wtyczki, uważam, że ich oferta nie dorównuje ekosystemowi Zsh. Ponadto Zsh oferuje znacznie bardziej zaawansowane systemy uzupełniania i edytowania linii. Te trzy potężne systemy pozwalają mi wykorzystać pracę innych ludzi i dostosować moje otoczenie w sposób, który uważam za trudny do osiągnięcia w Bash.

Jeśli ciekawią Cię artykuły podobne do 3 dobre powody, aby zastąpić Bash Zsh, zajrzyj do kategorii Linux i odkryj jeszcze więcej interesujących treści.

Indeks
  1. Ogromny ekosystem wtyczek do rozwiązania tysięcy problemów
  2. Inteligentna pomoc w poleceniach z doskonałymi uzupełnieniami
  3. Inteligentna edycja linii poleceń przy użyciu Zsh
  4. Edytor
    1. ZLE jest potężny

Możesz być zainteresowany

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Go up