Shell Z známý jako zsh je shell pro operační systémy typu Linux/Unix. Má podobnosti s jinými shelly v sh
rodina (Bourne shell), jako je bash
a ksh
, ale poskytuje mnoho pokročilých funkcí a výkonné možnosti úprav příkazového řádku, jako je vylepšené doplňování tabel.
Nebylo by možné zde pokrýt všechny možnosti zsh; existují doslova stovky stránek dokumentujících jeho mnoho funkcí. V tomto článku představím pět tipů, jak zvýšit vaši produktivitu pomocí příkazového řádku s zsh.
1. Motivy a pluginy
V průběhu let komunita open source vyvinula nespočet témat a pluginů pro zsh. Téma je předdefinovaná konfigurace výzvy, zatímco plugin je sada užitečných aliasů a funkcí, které usnadňují použití konkrétního příkazu nebo programovacího jazyka.
Nejrychlejší způsob, jak začít používat témata a pluginy, je použít konfigurační rámec zsh. Existuje mnoho dostupných, ale nejoblíbenější je Oh My Zsh. Ve výchozím nastavení umožňuje některé rozumné možnosti konfigurace zsh a je dodáván se stovkami témat a pluginů.
Motiv vás zvyšuje produktivitu, protože do výzvy přidává užitečné informace, jako je stav vašeho úložiště Git nebo používaného virtuálního prostředí Python. Tyto informace na první pohled vám ušetří psaní ekvivalentních příkazů k jejich získání a je to skvělý vzhled. Zde je příklad Powerlevel9k, mého zvoleného tématu:
Kromě témat obsahuje Oh My Zsh spoustu užitečných pluginů pro zsh. Například povolením pluginu Git získáte přístup k řadě užitečných aliasů, jako jsou:
$ alias | grep -i git | seřadit -R | head -10
g=git
ga='git add'
gapa='git add --patch'
gap='git apply'
gdt=' git diff-tree --no-commit-id --name-only -r'
gau='git add --update'
gstp='git stash pop'
gbda=' git větev --no-color --merged | příkaz grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | příkaz xargs -n 1 větev git -d'
gcs='git commit -S'
glg='git log --stat'
K dispozici jsou pluginy pro mnoho programovacích jazyků, balicích systémů a dalších nástrojů, které běžně používáte na příkazovém řádku. Zde je seznam pluginů, které používám na své pracovní stanici Fedora:
git golang fedora docker oc sudo vi-mode virtualenvwrapper
2. Chytré aliasy
Aliasy jsou velmi užitečné v zsh. Definování aliasů pro vaše nejpoužívanější příkazy vám ušetří spoustu psaní. Oh My Zsh ve výchozím nastavení konfiguruje několik užitečných aliasů, včetně aliasů pro navigaci v adresářích a nahrazení běžných příkazů dalšími možnostmi, jako jsou:
ls='ls --color=tty'
grep='grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}'Kromě aliasů příkazů umožňuje zsh dva další užitečné typy aliasů:alias s příponou a globální alias .
Alias přípony vám umožňuje otevřít soubor, který zadáte do příkazového řádku, pomocí zadaného programu na základě přípony souboru. Chcete-li například otevřít soubory YAML pomocí vim, definujte následující alias:
alias -s {yml,yaml}=vim
Nyní, když zadáte jakýkoli název souboru končící na
yml
neboyaml
v příkazovém řádku zsh otevře tento soubor pomocí vim:$ playbook.yml
# Otevře soubor playbook.yml pomocí vimGlobální alias vám umožňuje vytvořit alias, který je rozbalen kdekoli v příkazovém řádku, nejen na začátku. To je velmi užitečné pro nahrazení běžných názvů souborů nebo zřetězených příkazů. Například:
alias -g G='| grep -i'
Chcete-li použít tento alias, zadejte
G
kdekoli, kam byste zadali zřetězený příkaz:$ ls -l G do
drwxr-xr-x. 5 rgerardi rgerardi 4096 7. srpna 14:08 Dokumenty
drwxr-xr-x. 6 rgerardi rgerardi 4096 24. srpna 14:51 StaženíDále se podívejme, jak zsh pomáhá při navigaci v souborovém systému.
3. Snadná navigace v adresáři
Když používáte příkazový řádek, navigace v různých adresářích je jedním z nejběžnějších úkolů. Zsh to usnadňuje tím, že poskytuje některé užitečné funkce pro navigaci v adresáři. Tyto funkce jsou povoleny pomocí Oh My Zsh, ale můžete je povolit pomocí tohoto příkazu:
setopt autocd autopushd \ pushdignoredups
S těmito nastavenými možnostmi nemusíte zadávat
cd
ke změně adresářů. Stačí zadat název adresáře a zsh se na něj přepne:$ pwd
/home/rgerardi
$ /tmp
$ pwd
/tmpChcete-li se vrátit zpět, zadejte
-
:Zsh uchovává historii adresářů, které jste navštívili, takže můžete rychle přepnout na kterýkoli z nich. Chcete-li zobrazit seznam, zadejte
dirs -v
:$ dirs -v
0 ~
1 /var/log
2 /var/opt
3 /usr/bin
4 /usr/local
5 /usr/lib
6 /tmp
7 ~/Projects/Opensource.com/zsh-5tips
8 ~/Projects
9 ~/Projects/ansible
10 ~/DokumentyPřepněte do libovolného adresáře v tomto seznamu zadáním
~#
kde # je číslo adresáře v seznamu. Například:$ pwd
/home/rgerardi
$ ~4
$ pwd
/usr/localZkombinujte je s aliasy, aby byla navigace ještě jednodušší:
d='dirs -v | hlava -10'
1='cd -'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd - 9'Nyní můžete zadat
d
zobrazíte prvních deset položek v seznamu a číslo, na které chcete přepnout:$ d
0 /usr/local
1 ~
2 /var/log
3 /var/opt
4 /usr/bin
5 /usr/lib
6 /tmp
7 ~/Projects/Opensource.com/zsh-5tips
8 ~/Projekty
9 ~/Projects/ansible
$ pwd
/usr/local
6 $
/tmp
$ pwd
/tmpNakonec zsh automaticky rozšíří názvy adresářů o dokončení Tab. Zadejte první písmena názvů adresářů a
TAB
použít:$ pwd
/home/rgerardi
$ p/o/z (TAB)
$ Projects/Opensource.com/zsh-5tips/To je jen jedna z funkcí, které umožňuje výkonný systém doplňování tabulek zsh. Podívejme se na další.
4. Pokročilé dokončení karty
Výkonný dokončovací systém Zsh je jedním z jeho charakteristických znaků. Pro zjednodušení tomu říkám Tab Complete, ale pod kapotou se odehrává nejedna věc. Obvykle dochází k rozšíření a dokončení příkazů. Zde je společně proberu. Podrobnosti naleznete v této uživatelské příručce.
Dokončení příkazů je standardně povoleno pomocí Oh My Zsh. Chcete-li to povolit, přidejte do souboru
.zshrc
následující řádky soubor:autoload -U compinit
compinitSystém doplňování Zsh je chytrý. Snaží se navrhovat pouze položky, které lze použít v určitých kontextech – například pokud zadáte
cd
aTAB
, zsh navrhuje pouze názvy adresářů, protože znácd
nefunguje s ničím jiným.Naopak navrhuje uživatelská jména při spouštění uživatelských příkazů nebo názvy hostitelů při použití
ssh
neboping
, například.Má rozsáhlou knihovnu dokončení a rozumí mnoha různým příkazům. Pokud například používáte
tar
můžete stisknout Tab a zobrazit seznam souborů dostupných v balíčku jako kandidátů na extrakci:$ tar -xzvf test1.tar.gz test1/soubor1 (TAB)
soubor1 soubor2Zde je pokročilejší příklad pomocí
git
. V tomto příkladu při psaníTAB
, zsh automaticky doplní název jediného souboru v úložišti, který lze připravit:$ ls
původní plan.txt zsh-5tips.md zsh_theme_small.png
$ git status
Na větvi master
Vaše větev má aktuální verzi 'origin/master '.
Změny nejsou připraveny pro potvrzení:
(použijte "git add..." k aktualizaci toho, co bude potvrzeno)
(použijte "git checkout --..." pro zrušení změn v pracovním adresáři)
upraveno: zsh-5tips.md
žádné změny nebyly přidány do odevzdání (použijte "git add" a/ nebo "git commit -a")
$ git add (TAB)
$ git add zsh-5tips.mdRozumí také volbám příkazového řádku a navrhuje pouze ty, které jsou relevantní pro vybraný dílčí příkaz:
$ git commit - (TAB)
--all -a -- uspořádat všechny upravené a odstraněné cesty
--allow-empty -- povolit záznam prázdného commitu
--allow -empty-message – povolit záznam odevzdání s prázdnou zprávou
--amend – upravit špičku aktuální větve
--author - >--branch - zobrazit informace o větvi
--cleanup – zadejte, jak má být zpráva odevzdání vyčištěna
--date datum - dry-run – zobrazí pouze seznam cest, které mají být potvrzeny nebo ne, a všechny nesledované
--edit -e -- upravte zprávu odevzdání před potvrzením
- - přečíst zprávu o odevzdání z daného souboru
--gpg-sign -S -- GPG-podepsat odevzdání--include -i – aktualizujte dané soubory a potvrďte celý index
--interactive – interaktivně aktualizujte cesty v souboru indexu
---message - použijte zprávu - jako zpráva odevzdání
... ZKRÁCENO ...Po zadání
TAB
, můžete pomocí kláves se šipkami procházet seznamem možností a vybrat tu, kterou potřebujete. Nyní si nemusíte pamatovat všechny tyto možnosti Git.K dispozici je mnoho možností. Nejlepší způsob, jak najít to, co je pro vás nejužitečnější, je používat to.
5. Úpravy a historie příkazového řádku
Užitečné jsou také možnosti úprav příkazového řádku Zsh. Ve výchozím nastavení emuluje emacs. Pokud jako já dáváte přednost vi/vim, povolte vazby vi pomocí následujícího příkazu:
$ bindkey -v
Pokud používáte Oh My Zsh,
vi-mode
plugin umožňuje další vazby a indikátor režimu ve výzvě – velmi užitečné.Po povolení vazeb vi můžete upravit příkazový řádek pomocí příkazů vi. Například stiskněte
ESC+/
pro vyhledání historie příkazového řádku. Při hledání stiskněten
přinese další odpovídající řádek aN
předchozí. Většina běžných příkazů vi funguje po stisknutíESC
například0
pro skok na začátek řádku$
pro skok na koneci
pro vloženía
k připojení atd. Dokonce i příkazy následované pohybem, jako jecw
změnit slovo.Kromě úprav příkazového řádku poskytuje zsh několik užitečných funkcí historie příkazového řádku, pokud chcete opravit nebo znovu spustit dříve použité příkazy. Pokud jste například udělali chybu, zadejte
fc
přináší poslední příkaz ve vašem oblíbeném editoru, který to opraví. Respektuje$EDITOR
proměnnou a ve výchozím nastavení používá vi.Dalším užitečným příkazem je
r
, který znovu provede poslední příkaz; ar <WORD>
, který provede poslední příkaz obsahující řetězecWORD
.Nakonec zadejte dvojitou ránu (
!!
) vrátí poslední příkaz kdekoli na řádku. To je užitečné, například pokud jste zapomněli napsatsudo
pro provádění příkazů, které vyžadují zvýšená oprávnění:$ méně /var/log/dnf.log
/var/log/dnf.log:Povolení odepřeno
$ sudo !!
$ sudo less /var/log/dnf.logTyto funkce usnadňují nalezení a opětovné použití dříve zadaných příkazů.
Kam odtud jít?
Toto je jen několik funkcí zsh, které vám mohou zvýšit produktivitu; je jich mnohem víc. Další informace naleznete v následujících zdrojích:
Úvod do Z Shell
Uživatelská příručka k ZSH
Archlinux Wiki
milovníci zsh
Máte nějaké tipy na produktivitu zsh? Rád bych o nich slyšel v komentářích níže.
Linux