Jsem velkým fanouškem rozhraní příkazového řádku… Nesnáším používání počítačové myši! To mě motivovalo k hledání skvělých nástrojů, které by zlepšily můj uživatelský zážitek z CLI. Na příkaz Oh-My-Zsh jsem narazil během své stáže. Několik přátel mě přesvědčilo, abych tento shell používal kvůli jeho jednoduchosti a nastavitelnosti. Jako bonus je CLI rozšiřitelné o mnoho doplňků.
Tady je seznam jeho možností:
- Ověřování příkazů
- Oprava pravopisu
- Sdílení historie příkazů mezi všemi spuštěnými shelly
- Proměnlivé výzvy (Agnoster, RobbyRussell, …)
- Historie adresářů
- Skripty pro spuštění/vypnutí pomocí
zshenv
,zprofile
,zshrc
,zlogin
azlogout
- Silné možnosti automatického dokončování. Pomocí klávesy TAB můžete procházet různé možnosti a pomocí klávesy enter vybrat správnou složku. Bash by například vypsal všechny možnosti. To je poměrně spamové a znečišťuje to zpětné procházení.
- Doplňky: např. doplněk Git s obrovským seznamem užitečných aliasů Git.
Tento doplněk zobrazuje aktivní větev a poskytuje vizuální zpětnou vazbu o stavu systému Git:
– Zelená: větev, pokud nedošlo k žádným změnám
– Žlutá s ikonou kruhu: nesledované soubory
– Žlutá s ikonou plus: soubory připravené k odevzdání
Tento návod k instalaci provádím na svém virtuálním počítači Ubuntu 16.04. Abych vám ukázal základní sílu systému Oh-My-Zsh, nainstaluji zásuvný modul Git (Git-core). Tento doplněk poskytuje vizuální zpětnou vazbu o stavu systému Git v projektu.
- Instalace nezbytných balíčků
$ sudo apt install git-core zsh - Instalace Oh-My-Zsh z repozitáře Robbyho Russella
$ sh -c “$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)”. - Instalace písma Powerline pro zpestření CLI ikonami
$ sudo apt install fonts-powerline - Změňte téma z ‘robbyrussell’ na ‘agnoster’ pro legendární téma Oh-My-Zsh
$ nano ~/.zshrc - Najděte proměnnou
ZSH_THEME
a změňte ji:ZSH_THEME="agnoster"
- Nelíbí se mi, že téma zobrazuje moje uživatelské jméno a hostitele. Abychom se toho zbavili, změníme adresář na
$ cd ~/.oh-my-zsh/themes - Dále otevřeme soubor tématu pro ‘agnoster’ v editoru
$ nano agnoster.zsh-theme - Nyní můžeme změnit ‘Main prompt’. Ve funkci
build_prompt()
nemusíme zadávat prompt_context. Stačí tento řádek zakomentovat nebo odstranit. Nakonec změňte proměnnouPROMPT
na$(build_prompt)
.
Chcete-li téma skutečně zobrazit, musíte soubor .zshrc
zdrojovat takto: source ~/.zshrc
. Pokud vše proběhlo v pořádku, měli byste vidět něco jako obrázek na obálce!
Extra: Nastavte zsh jako náš výchozí shell. Spusťte jej ve svém výchozím shellu, ve většině případů to bude bash. Pokud tento příkaz provedete v zsh, nic se nezmění:
$ chsh -s $(který zsh)
Poznámka: Pokud použijete sudo
, změní se shell pro roota, ale ne pro vašeho pracovního uživatele. Kromě toho se ujistěte, že jste se odhlásili a znovu přihlásili, abyste viděli změny.
Instalace zásuvných modulů
Všechny zásuvné moduly uvedené na stránce zásuvných modulů Github jsou předinstalovány s Oh-My-Zsh na ~/.oh-my-zsh/plugins
. Vlastní zásuvné moduly lze nainstalovat na adrese ~/.oh-my-zsh/custom/plugins
. Chcete-li použít zásuvný modul, můžete jej jednoduše přidat do seznamu zásuvných modulů v souboru ~/.zshrc
. Přidávejte s rozmyslem, protože příliš mnoho zásuvných modulů zpomaluje spouštění shellu. Mezi jednotlivými zásuvnými moduly ponechte prázdné místo.
Barevné-člověk-stránky
V tomto příkladu jsem nainstaloval užitečný zásuvný modul, který dodá vašemu man pages
barevné zvýraznění . Abyste mohli zásuvný modul používat, vytvořte zdrojový kód svého souboru .zshrc
:
$ source ~/.zshrc
Zsh-syntax-highlighting
Dalším skvělým doplňkem je zvýraznění syntaxe pro váš shell. Kromě toho má tento zásuvný modul možnost ověřit správnost vašeho příkazu.
Tento zásuvný modul není nainstalován spolu s Oh-My-Zsh. Přejděte do složky ~/.oh-my-zsh/custom/plugins
a naklonujte kód z Githubu do této složky:
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting
Uvidíte složku s názvem zsh-syntax-highlighting
. Tento název je třeba přidat do seznamu zásuvných modulů.
Zsh-autosuggestions
Můžete také použít zsh-autosuggestions
pro dokončení příkazu. Navrhuje příkazy na základě vaší historie příkazů. Velmi užitečné! Pro výběr navrhovaného příkazu stiskněte šipku doprava.
Instalace je stejná jako u zsh-syntax-highlighting
:
$ git clone https://github.com/zsh-users/zsh-autosuggestions
A do seznamu zásuvných modulů přidejte zsh-autosuggestions
.
Postará se o Alias Enthusiast
Oh-My-Zsh si automaticky pamatuje 20 naposledy navštívených adresářů. Historii můžete vypsat chronologicky pomocí dirs -v
nebo jen d
.
Normálně můžete použít cd +1
pro přechod na předchozí adresář atd. Oh-My-Zsh to ještě zjednodušil, nyní můžete použít jen číslo položky v historii adresářů, kterou chcete navštívit… 1
.
Další zajímavé aliasy
-
alias
: Seznam všech aliasů. Pro vyhledání konkrétního aliasu můžete výstup přesměrovat nagrep
. -
/
:cd /
-
~
:cd ~
-
...
:cd ../..
-
....
:cd ../../..
-
.....
:cd ../../../..
Myslím, že jste to pochopili, že? -
take test_folder
: Vytvoří složku s názvemtest_folder
a provede v ní změny -
x
: Rozbalí archiv typůtar, bz2, rar, gz, tbz2, tgz, zip, Z, 7z
-
upgrade_oh_my_zsh
: Jednoduché komando pro aktualizaci instalace
Známé problémy & Řešení
Může se stát, že se soubor s historií poškodí. Neptejte se mě na konkrétní podrobnosti. Při každém spuštění nového terminálu se zobrazí tato zpráva:
zsh: corrupt history file /home/myusername/.zsh_history
Napravíme to pomocí následujících příkazů. Ujistěte se, že jste v kořenovém adresáři domovské složky. Příkaz fc vypíše, upraví nebo znovu spustí příkazy dříve zadané do shellu. Příkaz history umožňuje použít slova z předchozích příkazových řádků v právě zadávaném příkazovém řádku.
mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history
Závěr
Oh-My-Zsh je prostě úžasný!
Užitečné odkazy a zdroje
Tento článek vznikl s pomocí TheLedger.
- Oh-My-Zsh: http://ohmyz.sh/
- Pluginy: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins
- Témata: https://github.com/robbyrussell/oh-my-zsh/tree/master/themes/
- Zásuvný modul Git se všemi aliasy: https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git
- Přizpůsobení výzvy shellu: http://www.nparikh.org/unix/prompt.php#zsh
- ArchWiki o Zsh: https://wiki.archlinux.org/index.php/zsh#Autostart_X_at_login
- Zsh plugin pro zvýrazňování syntaxe: https://github.com/zsh-users/zsh-syntax-highlighting
- Zsh autosugestions plugin: https://github.com/zsh-users/zsh-autosuggestions
- RobbyRussell Wiki o přizpůsobení Zsh: https://github.com/robbyrussell/oh-my-zsh/wiki/Customization