🐧 Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Zsh Π½Π° Linux

by itisgood

Π’ этом руководствС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ 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
Из Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ zsh ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ установлСн Π² /usr/bin/zsh.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Π²Ρ‹ сСйчас Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ echo:

$ echo $0
-bash

ΠΈΠ»ΠΈ

$ echo $SHELL
/bin/bash
ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² настоящСС врСмя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° bash.
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ chsh:
$ 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
Π—Π°Ρ‚Π΅ΠΌ скачайтС установочный скрипт Oh My Zsh, запуститС:
$ wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh
Папка установки – Β«~/.oh-my-zshΒ», запуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ls, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΅Π΅ содСрТимоС:
$ 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
Π—Π°Ρ‚Π΅ΠΌ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ для ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ zsh.
Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ шаблон ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ Β«~/.oh-my-zshΒ» Π² свой домашний ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³:
$ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
$ source .zshrc
Π’Π΅ΠΏΠ΅Ρ€ΡŒ, запустив ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ls, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Π²ΠΈΠ΄.

Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌΡƒ

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 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
Π—Π°Ρ‚Π΅ΠΌ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку Π² ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π° ~/.zshrc:
$ 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 – Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ стоит ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ большС ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΡ ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°

Бпасибо Π·Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ, поТалуйста, ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ свои мысли Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π½ΠΈΠΆΠ΅.

 

 

You may also like

Leave a Comment