Перейти к основному содержанию
Рецепты Linux

Main navigation

  • Основы
  • Система
  • Команды
  • Программы
  • Дистро
  • Интерфейсы
  • Устройства
  • Доки
User account menu
  • Войти

Строка навигации

  1. Главная

Терминал Linux zsh

Автор: admin, 16 января, 2024
Интерфейсы

Современная интерактивная командная оболочка Unux zsh (Z shell) — расширенный аналог bash и скриптовый интерпретатор.

Установка и настройка командной оболочки zsh

Содержание

  • Особенности
  • Установка Zsh
    • В Ubuntu
    • В Arch Linux
  • Установка Oh My Zsh!
  • Синтаксис
  • Опции
    • Специальные опции
    • Именованные опции
    • Псевдонимы опций
    • Варианты символов
  • Настройка Zsh в Linux
    • Установлен ли Zsh
    • Терминал по умолчанию
  • Заключение

Особенности

Основные полезные особенности zsh:

  • программируемое автодополнение, которое помогает пользователям вводить как команды, так и их аргументы, со встроенной поддержкой нескольких сотен команд;
  • разделение истории команд между всеми запущенными экземплярами оболочки;
  • расширенное дополнение названий файлов, что позволяет указать файл без необходимости запускать внешние программы, наподобие find;
  • расширенная поддержка переменных и массивов;
  • редактирование многострочных команд в едином буфере;
  • коррекция опечаток;
  • наличие различных режимов совместимости (то есть, можно использовать zsh вместо bash при запуске, как /bin/sh);
  • модифицируемые приглашения (prompts), включающие возможность расположить приглашение справа и настроить автоскрытие при наборе длинных команд.

Установка zsh

В Ubuntu

oleg@mobile:~:$ sudo apt zsh

В Arch Linux

oleg@mobile:~:$ sudo pacman -S zsh
разрешение зависимостей...
проверка конфликтов...
Пакеты (1) zsh-5.9-4
Будет загружено:    2,23 MiB
Будет установлено:  6,62 MiB
:: Приступить к установке? [Y/n] y
:: Получение пакетов...
 zsh-5.9-4-x86_64                                       2,2 MiB   721 KiB/s 00:03 [###############################################] 100%
(1/1) проверка ключей                                                             [###############################################] 100%
(1/1) проверка целостности пакета                                                 [###############################################] 100%
(1/1) загрузка файлов пакетов                                                     [###############################################] 100%
(1/1) проверка конфликтов файлов                                                  [###############################################] 100%
(1/1) проверка доступного места                                                   [###############################################] 100%
:: Обработка изменений пакета...
(1/1) установка zsh                                                               [###############################################] 100%
:: Запуск post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
oleg@mobile:~:$

Установка Oh My Zsh!

Платформа для управления вашей конфигурацией zsh. Включает более 180 дополнительных плагинов и более 120 тем.

В Arch Linux

oleg@mobile:~:$ yay -S oh-my-zsh-git
AUR Explicit (1): oh-my-zsh-git-r6192.be4a95297-1
:: PKGBUILD up to date, skipping download: oh-my-zsh-git
  1 oh-my-zsh-git                    (файлы сборки существуют)
...
==> Завершена сборка пакета oh-my-zsh-git r7057.e11d81303-1 (Вс 26 ноя 2023 16:35:51)
==> Очистка...
загрузка пакетов...
разрешение зависимостей...
проверка конфликтов...
Пакеты (1) oh-my-zsh-git-r7057.e11d81303-1
Будет установлено:  5,21 MiB
:: Приступить к установке? [Y/n] y
(1/1) проверка ключей                                                             [###############################################] 100%
(1/1) проверка целостности пакета                                                 [###############################################] 100%
(1/1) загрузка файлов пакетов                                                     [###############################################] 100%
(1/1) проверка конфликтов файлов                                                  [###############################################] 100%
(1/1) проверка доступного места                                                   [###############################################] 100%
:: Обработка изменений пакета...
(1/1) установка oh-my-zsh-git                                                     [###############################################] 100%
You have to execute 'cp /usr/share/oh-my-zsh/zshrc ~/.zshrc' to use it.
Дополнительные зависимости для 'oh-my-zsh-git'
    ruby: for some plugin functionality [установлено]
    python: for some plugin functionality [установлено]
    oh-my-zsh-powerline-theme-git: great theme
    bullet-train-oh-my-zsh-theme-git: better powerline theme
    git: most themes use git (highly recommended but still optional) [установлено]
:: Запуск post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
oleg@mobile:~:$

Синтаксис

$ zsh [<опции>] [<аргумент> ...]

Опции

Специальные опции

--help

Показать эту справку, затем выйти

--version

Показать номер версии zsh, затем выйти

-b

обрабатывать конечные опции

-c

Принять первый аргумент как команду для выполнения

-o OPTION

Установить опцию по имени

Обычные варианты перечислены.

Опцию можно включить с помощью -o OPTION, --OPTION, +o no_OPTION или +-no-OPTION.

Опцию можно отключить с помощью -o no_OPTION, --no-OPTION, +o OPTION или +-OPTION.

Опции перечислены ниже только в форме --OPTION или --no-OPTION.

Именованные опции

--aliases
--aliasfuncdef
--allexport
--alwayslastprompt
--alwaystoend
--appendcreate
--appendhistory
--autocd
--autocontinue
--autolist
--automenu
--autonamedirs
--autoparamkeys
--autoparamslash
--autopushd
--autoremoveslash
--autoresume
--badpattern
--banghist
--bareglobqual
--bashautolist
--bashrematch
--beep
--bgnice
--braceccl
--bsdecho
--caseglob
--casematch
--casepaths
--cbases
--cdablevars
--cdsilent
--chasedots
--chaselinks
--checkjobs
--checkrunningjobs
--clobber
--clobberempty
--combiningchars
--completealiases
--completeinword
--continueonerror
--correct
--correctall
--cprecedences
--cshjunkiehistory
--cshjunkieloops
--cshjunkiequotes
--cshnullcmd
--cshnullglob
--debugbeforecmd
--dvorak
--emacs
--equals
--errexit
--errreturn
--evallineno
--exec
--extendedglob
--extendedhistory
--flowcontrol
--forcefloat
--functionargzero
--glob
--globalexport
--globalrcs
--globassign
--globcomplete
--globdots
--globstarshort
--globsubst
--hashcmds
--hashdirs
--hashexecutablesonly
--hashlistall
--histallowclobber
--histbeep
--histexpiredupsfirst
--histfcntllock
--histfindnodups
--histignorealldups
--histignoredups
--histignorespace
--histlexwords
--histnofunctions
--histnostore
--histreduceblanks
--histsavebycopy
--histsavenodups
--histsubstpattern
--histverify
--hup
--ignorebraces
--ignoreclosebraces
--ignoreeof
--incappendhistory
--incappendhistorytime
--interactive
--interactivecomments
--ksharrays
--kshautoload
--kshglob
--kshoptionprint
--kshtypeset
--kshzerosubscript
--listambiguous
--listbeep
--listpacked
--listrowsfirst
--listtypes
--localloops
--localoptions
--localpatterns
--localtraps
--login
--longlistjobs
--magicequalsubst
--mailwarning
--markdirs
--menucomplete
--monitor
--multibyte
--multifuncdef
--multios
--nomatch
--notify
--nullglob
--numericglobsort
--octalzeroes
--overstrike
--pathdirs
--pathscript
--pipefail
--posixaliases
--posixargzero
--posixbuiltins
--posixcd
--posixidentifiers
--posixjobs
--posixstrings
--posixtraps
--printeightbit
--printexitvalue
--privileged
--promptbang
--promptcr
--promptpercent
--promptsp
--promptsubst
--pushdignoredups
--pushdminus
--pushdsilent
--pushdtohome
--rcexpandparam
--rcquotes
--rcs
--recexact
--rematchpcre
--restricted
--rmstarsilent
--rmstarwait
--sharehistory
--shfileexpansion
--shglob
--shinstdin
--shnullcmd
--shoptionletters
--shortloops
--shortrepeat
--shwordsplit
--singlecommand
--singlelinezle
--sourcetrace
--sunkeyboardhack
--transientrprompt
--trapsasync
--typesetsilent
--typesettounset
--unset
--verbose
--vi
--warncreateglobal
--warnnestedvar
--xtrace
--zle

Псевдонимы опций

--braceexpand            equivalent to --no-ignorebraces
--dotglob                equivalent to --globdots
--hashall                equivalent to --hashcmds
--histappend             equivalent to --appendcreate
--histexpand             equivalent to --badpattern
--log                    equivalent to --no-histnofunctions
--mailwarn               equivalent to --mailwarning
--onecmd                 equivalent to --singlecommand
--physical               equivalent to --cdsilent
--promptvars             equivalent to --promptsubst
--stdin                  equivalent to --shinstdin
--trackall               equivalent to --hashcmds

Варианты символов

-0    equivalent to --completeinword
-1    equivalent to --printexitvalue
-2    equivalent to --no-autoresume
-3    equivalent to --no-nomatch
-4    equivalent to --globdots
-5    equivalent to --notify
-6    equivalent to --beep
-7    equivalent to --ignoreeof
-8    equivalent to --markdirs
-9    equivalent to --autocontinue
-B    equivalent to --no-bashrematch
-C    equivalent to --no-checkjobs
-D    equivalent to --pushdtohome
-E    equivalent to --pushdsilent
-F    equivalent to --no-glob
-G    equivalent to --nullglob
-H    equivalent to --rmstarsilent
-I    equivalent to --ignorebraces
-J    equivalent to --appendhistory
-K    equivalent to --no-badpattern
-L    equivalent to --sunkeyboardhack
-M    equivalent to --singlelinezle
-N    equivalent to --autoparamslash
-O    equivalent to --continueonerror
-P    equivalent to --rcexpandparam
-Q    equivalent to --pathdirs
-R    equivalent to --longlistjobs
-S    equivalent to --recexact
-T    equivalent to --cbases
-U    equivalent to --mailwarning
-V    equivalent to --no-promptcr
-W    equivalent to --autoremoveslash
-X    equivalent to --listtypes
-Y    equivalent to --menucomplete
-Z    equivalent to --zle
-a    equivalent to --allexport
-d    equivalent to --no-globalrcs
-e    equivalent to --errexit
-f    equivalent to --no-rcs
-g    equivalent to --histignorespace
-h    equivalent to --histignoredups
-i    equivalent to --interactive
-k    equivalent to --interactivecomments
-l    equivalent to --login
-m    equivalent to --monitor
-n    equivalent to --no-exec
-p    equivalent to --privileged
-r    equivalent to --restricted
-s    equivalent to --shinstdin
-t    equivalent to --singlecommand
-u    equivalent to --no-unset
-v    equivalent to --verbose
-w    equivalent to --cdsilent
-x    equivalent to --xtrace
-y    equivalent to --shwordsplit

Настройка zsh в Linux

Установлен ли zsh

Для проверки выполняем следующую команду:

oleg@mobile:~:$ zsh --version
zsh 5.9 (x86_64-pc-linux-gnu)
oleg@mobile:~:$

Терминал по умолчанию

Для установки этой командной оболочки по умолчанию выполним следующую команду:

oleg@mobile:~:$ chsh -s $(which zsh)
Изменение шелла для oleg.
Пароль: 
Шелл изменён.
oleg@mobile:~:$

Выходим из системы и входим заново для использования новой дефолтной оболочки.

Проверяем:

oleg@mobile:~:$ echo $SHELL
/bin/bash
oleg@mobile:~:$

При первичной установке оболочки zsh оболочка предложит сделать определённые настройки:

This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.
You can:
(q)  Quit and do nothing.  The function will be run again next time.
(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.
(1)  Continue to the main menu.
--- Type one of the keys in parentheses --- 

При желании отложить настройки нажимаем q.

Результат:

mobile%

При нажатии на 0 будет создан конфигурационный файл ~/.zshrc, содержащий только комментарий и повторного запуска этой функции больше не произойдёт.

При нажатии на 1 будет выполнен переход в Главное меню:

Please pick one of the following options:
(1)  Configure settings for history, i.e. command lines remembered
     and saved by the shell.  (Recommended.)
(2)  Configure the new completion system.  (Recommended.)
(3)  Configure how keys behave when editing command lines.  (Recommended.)
(4)  Pick some of the more common shell options.  These are simple "on"
     or "off" switches controlling the shell's features.  
(0)  Exit, creating a blank ~/.zshrc file.
(a)  Abort all settings and start from scratch.  Note this will overwrite
     any settings from zsh-newuser-install already in the startup file.
     It will not alter any of your other settings, however.
(q)  Quit and do nothing else.  The function will be run again next time.
--- Type one of the keys in parentheses --- 

Заключение

В Linux терминальная оболочка zsh является очень гибкой и удобной рабочей средой. Если вы значительную часть времени работаете в консоли и пользуетесь Vim, то время, потраченное на изучение и настройку оболочки, обязательно окупится в дальнейшем.

Последние материалы

  • Файловый менеджер Thunar
    1 hour ago
  • Эмулятор терминала Terminator
    5 days 3 hours ago
  • Приложение scanimage
    1 week 4 days ago
  • Утилита sensors
    2 weeks 1 day ago
  • Сканер Rkhunter
    3 weeks 1 day ago
RSS feed

Secondary menu

  • О проекте

© 2008–2025 Олег Меньшенин mensh@yandex.ru