Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ zsh ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Oh my zsh Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ Linux.
Z shell (Zsh) – ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΌΠΎΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ bash, tcsh ΠΈ ksh.
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ:
- ΠΡΡΡΠ΅Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ
- Π£Π΄ΠΎΠ±Π½Π°Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΌ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²
- ΠΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°
- ΠΠ²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
- ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ²Π΅ΡΠ°
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ZSH Π½Π° Linux
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ Ubuntu ΠΈ Debian Π½Π΅Ρ zsh.
Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ zsh Π² ubuntu 20.04 ΠΈ Debian 10, Π·Π°ΠΏΡΡΡΠΈΡΠ΅:
$ sudo apt install zsh
ΠΠ° CentOS 8:
$ sudo yum install zsh
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ zsh:
$ which zsh /usr/bin/zsh
ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ
Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ Π²Ρ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ echo:
$ echo $0 -bash
ΠΈΠ»ΠΈ
$ echo $SHELL /bin/bash
$ chsh -s $(which zsh)
ΠΡΠΉΠ΄ΠΈΡΠ΅ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ΅Π°Π½ΡΠ°, ΡΠ΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΠΎΠΉΠ΄Π΅ΡΠ΅ Π·Π°Π½ΠΎΠ²ΠΎ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π», Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Zsh Π²ΠΌΠ΅ΡΡΠΎ bash ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
$ echo $0 -zsh
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π² CentOS 8 ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ util-linux-user, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ chsh:
$ sudo dnf install util-linux-user
ΠΈΠ»ΠΈ
$ sudo yum install util-linux-user
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Oh my zsh
Oh My Zsh – ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΏΠΎΠ²Π΅ΡΡ Zsh.
ΠΠ½ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ΅ΠΌ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ wget ΠΈ git Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ:
$ sudo apt install git wget
ΠΠ° CentOS:
$ sudo dnf install wget git
$ wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh
$ ls ~/.oh-my-zsh CODE_OF_CONDUCT.md LICENSE.txt cache lib oh-my-zsh.sh templates tools CONTRIBUTING.md README.md custom log plugins themes
$ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc $ source .zshrc
ΠΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΌΡ
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Oh-my-zsh ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ΠΌΡ robbyrussell.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΡΡΠΎ, ΠΎΡΠΊΡΡΠ² ΡΠ°ΠΉΠ» .zshrc:
# If you come from bash you might have to change your $PATH. # export PATH=$HOME/bin:/usr/local/bin:$PATH # Path to your oh-my-zsh installation. export ZSH=$HOME/.oh-my-zsh # Set name of the theme to load --- if set to "random", it will # load a random theme each time oh-my-zsh is loaded, in which case, # to know which specific one was loaded, run: echo $RANDOM_THEME # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes ZSH_THEME="robbyrussell"
ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΠΌ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ~/.oh-my-zsh/themes/.
Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΌΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ» .zshrc ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΠΌΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΌΡ Π½Π° Β«kiwiΒ», ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅:
ZSH_THEME="kiwi"
ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π·Π°ΠΏΡΡΡΠΈΠ²:
$ source .zshrc
ΠΠ°ΠΊ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ
Oh-my-zsh ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ~/.oh-my-zsh/plugins.
Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ, ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ» .zshrc ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π² ΡΡΡΠΎΠΊΡ Β«pluginsΒ».
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
plugins=(git docker gcloud terraform vagrant)
ΠΠ°ΡΡΡΠΎΠΈΠΊΠ° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° Zsh
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ Zsh, ΠΊΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ zsh-syntax-hightlighting ΠΈΠ· github ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΠΏΠ°ΠΏΠΊΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²:
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ mv zsh-syntax-highlighting ~/.oh-my-zsh/plugins
$ echo "source ~/.oh-my-zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zshβ >> ~/.zshrc $ source ~/.zshrc
ΠΠ°ΡΡΡΠΎΠΈΠΊΠ° Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π° Zsh
ΠΡΠΈ Π²Π²ΠΎΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ zsh ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π ΡΡΠ°ΡΡΡΡ, oh-my-zsh ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ zsh-autosuggestions:
$ git clone https://github.com/zsh-users/zsh-autosuggestions $ mv zsh-autosuggestions ~/.oh-my-zsh/custom/plugins
ΠΠ°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π² ΡΠ°ΠΉΠ»Π΅ ~/.zshrc:
plugins=(git docker gcloud terraform vagrant zsh-autosuggestions)
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π·Π°ΠΏΡΡΡΠΈΠ²:
$ source ~/.zshrc
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ZSH Π½Π° ΠΌΠ°ΡΠΈΠ½Π°Ρ Ρ Ubuntu 20.04 ΠΈ CentOS 8.
Fish shell – Π΅ΡΠ΅ ΠΎΠ΄Π½Π° Ρ ΠΎΡΠΎΡΠ°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΠΈΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΡ ΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΡΡΠ°Π²ΡΡΠ΅ ΡΠ²ΠΎΠΈ ΠΌΡΡΠ»ΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π½ΠΈΠΆΠ΅.