Jako uživatel Linuxu jsem vždy používal pouze bash, protože to bylo výchozí u všech distribucí, které jsem použil. Zdá se, že lidé používající jiné unixové systémy, jako je BSD, používají jiné shelly mnohem častěji. V zájmu dozvědět se trochu více jsem se rozhodl vyzkoušet zsh.
Jako uživatel bash:
- Jaké funkce mi budou chybět?
- A na které bych si měl dát pozor?
Přijatá odpověď:
Rozsáhlejší odpověď najdete na https://apple.stackexchange.com/questions/361870/what-are-the-practical-differences-between-bash-and-zsh/361957#361957
Na jiných webech Stack Exchange již na toto téma bylo poměrně dost aktivity. Moje zkušenost s přechodem z bash na zsh, pokud si pamatuji (bylo to před lety²), je taková, že jsem nevynechal jedinou věc. Získal jsem hodně; zde jsou podle mě jednoduché funkce specifické pro zsh, které používám nejčastěji:
-
Funkce zsh, která mi nejvíce chybí, když občas používám bash, je autocd:v zsh znamená spuštění adresáře změnu do něj, za předpokladu, že zapnete
autocd
možnost.⁴ -
Další velmi užitečnou funkcí je efektní globbing.
hieroglyfyznaky jsou trochu obtížně zapamatovatelné, ale velmi pohodlné (jako v tom, že je často rychlejší je vyhledat, než napsat ekvivalentnífind
příkaz). Několik jednodušších příkladů:
foo*~*.bak
=všechny shody profoo*
kromě těch, které odpovídají*.bak
foo*(.)
=pouze běžné soubory vyhovujícífoo*
foo*(/)
=pouze adresáře vyhovujícífoo*
foo*([email protected])
=pouze visící symbolické odkazy odpovídajícífoo*
foo*(om[1,10])
=10 nejnovějších souborů odpovídajícíchfoo*
foo*(Lm+1)
=pouze soubory o velikosti> 1 MB
dir/**/foo*
=foo*
v adresářidir
a všechny jeho podadresáře, rekurzivně⁴ -
Pro efektní přejmenování,
zmv
vestavěný může být užitečný. Například ke zkopírování každéhofile
dofile.bak
:zmv -C '(*)(#q.)' '$1.bak'
-
Bash i zsh mají slušný systém dokončování, který je třeba explicitně zapnout (
. /etc/bash_completion
neboautoload -U compinit; compinit
). Zsh's je mnohem lépe konfigurovatelný a obecně lepší.
Pokud spustíte zsh bez .zshrc
, spustí interaktivní nabídku, která vám umožní vybrat možnosti konfigurace. (Některé distribuce mohou toto zakázat; v takovém případě spusťte autoload zsh-newuser-install; zsh-newuser-install
.) Doporučuji povolit doporučené možnosti historie, zapnout dokončování („nový styl“) a zapnout „společné možnosti shellu“ kromě beep
. Později nakonfigurujte další možnosti, jakmile je objevíte.
²V té době bylo programovatelné dokončení zabijáckou funkcí zsh, ale bash ji získal brzy poté.
⁴Funkce, které bash získal pouze ve verzi 4 (takže nebyly široce dostupné v době zveřejnění této odpovědi a nejsou dostupné v systému bash na macOS), jsou menšího typu.