GNU/Linux >> Znalost Linux >  >> Linux

Začínáme se Zsh

Z-shell (nebo Zsh) je interaktivní POSIX shell podobný Bourneovi, známý pro své množství inovativních funkcí. Uživatelé Z-Shell často citují jeho četné vymoženosti a připisují mu zásluhy za zvýšenou efektivitu a rozsáhlé přizpůsobení.

Pokud jste v Linuxu nebo Unixu relativně nováčci, ale máte dost zkušeností na to, abyste otevřeli terminál a spustili několik příkazů, pravděpodobně jste použili shell Bash. Bash je pravděpodobně definitivní shell svobodného softwaru, částečně kvůli jeho progresivním funkcím a částečně proto, že se dodává jako výchozí shell na většině populárních operačních systémů Linux a Unix. Čím více však shell používáte, tím více začínáte nacházet malé věci, které by mohly být lepší pro váš způsob použití. Pokud je open source něčím známý, je to volba . Mnoho lidí se rozhodne "absolvovat" z Bash na Z.

Co je to Zsh?

Shell je pouze rozhraní pro váš operační systém. Interaktivní shell vám umožňuje zadávat příkazy prostřednictvím toho, co se nazývá standardní vstup nebo stdin a získat výstup prostřednictvím standardního výstupu a standardní chyba nebo stdout a stderr . Existuje mnoho shellů, včetně Bash, Csh, Ksh, Tcsh, Dash a Zsh. Každý má funkce založené na tom, co jeho programátoři považovali za nejlepší pro shell. Zda jsou tyto funkce dobré nebo špatné, záleží na vás, koncovém uživateli.

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Zsh má funkce, jako je interaktivní doplňování tabulek, automatické vyhledávání souborů, integrace regulárních výrazů, pokročilá zkratka pro definování rozsahu příkazů a bohatý motivový modul. Tyto funkce jsou zahrnuty v jinak známém prostředí shellu podobnému Bourneovi, což znamená, že pokud již znáte a máte rádi Bash, bude vám Zsh povědomý – až na to, že má více funkcí. Můžete si to představit jako druh Bash++.

Instalace Zsh

Nainstalujte Zsh pomocí správce balíčků.

Na Fedoře, RHEL a CentOS:

$ sudo dnf install zsh

Na Ubuntu a Debianu:

$ sudo apt install zsh

V systému MacOS jej můžete nainstalovat pomocí MacPorts:

$ sudo port install zsh

Nebo s Homebrew:

$ brew install zsh

Zsh je možné provozovat na Windows, ale pouze na linuxové nebo linuxové vrstvě, jako je Windows Subsystem for Linux (WSL) nebo Cygwin. Tato instalace je mimo rozsah tohoto článku, proto si přečtěte dokumentaci společnosti Microsoft.

Nastavení Zsh

Zsh není emulátor terminálu; je to shell, který běží uvnitř emulátoru terminálu. Chcete-li tedy spustit Zsh, musíte nejprve spustit okno terminálu, jako je GNOME Terminal, Konsole, Terminal, iTerm2, rxvt nebo jiný terminál podle vašich preferencí. Poté můžete spustit Zsh zadáním:

$ zsh

Při prvním spuštění Zsh budete požádáni o výběr některých možností konfigurace. To vše lze později změnit, takže stiskněte 1 pokračovat.

This is the Z Shell configuration function for new users, zsh-newuser-install.

(q)  Quit and do nothing.

(0)  Exit, creating the file ~/.zshrc

(1)  Continue to the main menu.

Existují čtyři kategorie předvoleb, takže začněte úplně nahoře.

  1. První kategorie vám umožňuje zvolit, kolik příkazů bude zachováno v souboru historie shellu. Ve výchozím nastavení je nastaveno na 1 000 řádků.
  2. Dokončení Zsh je jednou z jeho nejzajímavějších funkcí. Aby to bylo jednoduché, zvažte jeho aktivaci s výchozími možnostmi, dokud si nezvyknete na to, jak funguje. Stiskněte 1 pro výchozí možnosti 2 pro ruční nastavení možností.
  3. Vyberte vazby kláves Emacs nebo Vi. Bash používá vazby Emacs, takže na to už jste možná zvyklí.
  4. Nakonec se můžete dozvědět o některých jemných funkcích Zsh (a nastavit nebo zrušit nastavení). Můžete například přestat používat cd příkazem tím, že umožníte Zsh zahájit změnu adresáře, když zadáte nespustitelnou cestu bez příkazu. Chcete-li aktivovat jednu z těchto dalších možností, zadejte číslo možnosti a zadejte s nastavit to. Zkuste zapnout všechny možnosti, abyste získali plný zážitek ze Zsh. Jejich nastavení můžete později zrušit úpravou ~/.zshrc .

Pro dokončení konfigurace stiskněte 0 .

Použití Zsh

Zsh má zpočátku pocit, jako by používal Bash, což je nepochybně jedna z mnoha funkcí. Existují vážné rozdíly například mezi Bash a Tcsh, takže možnost přepínat mezi Bash a Zsh je pohodlí, díky kterému je Zsh snadné vyzkoušet a snadno se používat doma, pokud musíte používat Bash v práci nebo na serveru.

Změna adresáře pomocí Zsh

Jsou to malé rozdíly, které dělají Zsh pěkným. Nejprve zkuste změnit adresář na složku Dokumenty bez cd příkaz . Zdá se to příliš dobré, aby to byla pravda; ale pokud zadáte cestu k adresáři bez dalších pokynů, Zsh se změní na tento adresář:

% Documents
% pwd
/home/seth/Documents

To způsobí chybu v Bash nebo jiném normálním shellu. Ale Zsh není ani zdaleka normální a tohle je jen začátek.

Vyhledávání pomocí Zsh

Když chcete najít soubor pomocí normálního shellu, pravděpodobně se uchýlíte k najít nebo najít příkaz. Přinejmenším jste možná použili ls -R pro rekurzivní výpis sady adresářů. Zsh má vestavěnou funkci, která mu umožňuje najít soubor v aktuálním nebo jiném podadresáři.

Předpokládejme například, že máte dva soubory s názvem foo.txt . Jeden je umístěn ve vašem aktuálním adresáři a druhý je v podadresáři s názvem foo . V prostředí Bash můžete vypsat soubor v aktuálním adresáři pomocí:

$ ls
foo.txt

a druhý můžete uvést tak, že explicitně uvedete cestu k podadresáři:

$ ls foo
foo.txt

Chcete-li vypsat obojí, musíte použít -R přepínač, možná v kombinaci s grep :

$ ls -R | grep foo.txt
foo.txt
foo.txt

Ale v Zsh můžete použít ** těsnopis:

% ls **/foo.txt
foo.txt
foo.txt

A tuto syntaxi můžete použít s jakýmkoli příkazem, nejen s ls . Představte si vaši zvýšenou efektivitu při přesouvání konkrétních typů souborů z jedné kolekce adresářů do jednoho umístění nebo při spojování úryvků textu do souboru nebo při procházení protokolů.

Použití doplňování Zsh Tab

Dokončování karet je funkce pro pokročilé uživatele v Bash a některých dalších shellech a vzala svět Unixu útokem, když se stala běžnou. Uživatelé Unixu se již nemuseli uchylovat k zástupným znakům při psaní dlouhých a zdlouhavých cest (například /h*/s*h/V*/SCS/sc*/comp*/t*/a*/*9/ 04/LS*loď*v , což je mnohem snazší než psát /home/seth/Videos/SCS/scenes/composite/takes/approved/109/04/LS_boat-port-cargo-mover.mkv ). Místo toho mohli stisknout klávesu Tab, když zadali dostatek jedinečného řetězce. Pokud například víte, že existuje pouze jeden adresář začínající na h na kořenové úrovni vašeho systému můžete zadat /h a poté stiskněte Tab. Je to rychlé, je to jednoduché, je to efektivní. Také potvrzuje, že cesta existuje; pokud Tab nic nedokončí, víte, že hledáte na špatném místě nebo jste část cesty zadali špatně.

Pokud však máte mnoho adresářů, které sdílejí pět nebo více stejných prvních písmen, Tab rozhodně odmítá dokončit. Zatímco ve většině moderních terminálů (alespoň) odhalí soubory, které mu brání uhodnout, co máte na mysli, k jejich odhalení jsou obvykle potřeba dvě stisknutí Tab; Proto se dokončování tabulátoru často stává takovou souhrou písmen a tabulátorů na vaší klávesnici, že máte pocit, jako byste trénovali klavírní recitál.

Zsh řeší tuto drobnou nepříjemnost procházením možných dokončení. Pokud zadáte ls ~/D a stiskněte Tab, Zsh dokončí váš příkaz pomocí Dokumentů za prvé; pokud znovu stisknete Tab, nabídne Stahování , a tak dále, dokud nenajdete ten, který chcete.

Zástupné karty v Zsh

Zástupné znaky se v Zsh chovají jinak, než na co jsou uživatelé Bash zvyklí. V první řadě je lze upravit. Pokud například chcete vypsat všechny složky ve vašem aktuálním adresáři, můžete použít upravený zástupný znak:

% ls
dir0   dir1   dir2   file0   file1
% ls *(/)
dir0   dir1   dir2

V tomto příkladu (/) kvalifikuje výsledky zástupného znaku, takže Zsh zobrazí pouze adresáře. Chcete-li vypsat pouze soubory, použijte (.) . Chcete-li zobrazit symbolické odkazy, použijte (@) . Chcete-li zobrazit seznam spustitelných souborů, použijte (*) .

% ls ~/bin/*(*)
fop  exify  tt

Zsh nezná pouze typy souborů. Může také vypsat seznam podle času modifikace pomocí stejné konvence modifikátoru zástupných znaků. Pokud například chcete najít soubor, který byl změněn během posledních osmi hodin, použijte mh modifikátor (pro upraveno a hodiny ) a záporné celé číslo hodin:

% ls ~/Documents/*(mh-8)
cal.org   game.org   home.org

Chcete-li najít soubor upravený před více než (například) dvěma dny, modifikátory se změní na md (pro upraveno a den ) s kladným celým číslem:

% ls ~/Documents/*(+2)
holiday.org

S modifikátory a kvalifikátory zástupných znaků můžete dělat mnohem víc, takže si přečtěte manuálovou stránku Zsh pro všechny podrobnosti.

Vedlejší efekt zástupných znaků

Chcete-li použít zástupné znaky tak, jak byste je použili v Bash, někdy je nutné je ukončit v Zsh. Pokud například kopírujete některé soubory na svůj server v Bash, můžete použít zástupný znak, jako je tento:

$ scp IMG_*.JPG [email protected]:~/www/ph*/*19/09/14

To funguje v Bash, ale Zsh vrací chybu, protože se pokouší rozšířit proměnné na vzdálené straně před vydáním scp příkaz. Abyste se tomu vyhnuli, musíte escapovat vzdálené proměnné:

% scp IMG_*.JPG [email protected]:~/www/ph\*/\*19/09/14

Právě tyto typy malých výjimek vás mohou frustrovat, když přecházíte na nový shell. Při používání Zsh jich není mnoho (při přepnutí zpět na Bash po zkušenostech se Zsh je jich pravděpodobně více), ale když k nim dojde, zachovejte klid a buďte explicitní. Zřídka uděláte chybu, když budete striktně dodržovat POSIX – ale pokud to selže, vyhledejte problém, vyřešte jej a pokračujte dál. Hyperpolyglot.org se ukázal jako neocenitelný pro mnoho uživatelů přilepených na jednom shellu v práci a druhém doma.

V mém dalším článku Zsh vám ukážu, jak nainstalovat motivy a pluginy, aby byl váš Z-Shell ještě Z-ier.


Linux
  1. Začínáme s ls

  2. Začínáme se Sambou pro interoperabilitu

  3. Jak na to:Začínáme s Ansible

  1. Začínáme s GnuCash

  2. Začínáme s PostgreSQL na Linuxu

  3. Začínáme s SSH v Linuxu

  1. Začínáme s Etcher.io

  2. Začínáme s regulárními výrazy

  3. Začínáme s Tmux