Интерпретатор командной строки.
Интерпретатор командной строки это программа которая обеспечивает базовые возможности управления операционной системой с помощью ввода команд в интерактивном режиме или исполнения сценариев, написанных на специальном языке программирования. Она запускается после входа пользователя в систему, в случае отсутствия графического менеджера. Из графического интерфейса запускается с помощью эмуляторов терминала gnome-shell, xterm и т.п. Существует большое количество разных интерпретаторов командной строки sh, ksh, csh, tcsh, zsh, mksh, dash, fish и пр. Применяются они в разных UNIX-подобных операционных системах и различаются встроенными командами и языком написания сценариев. Посмотреть тип исполянемой команды можно с помощью команды type
.
amnesia@amnesia:~$ type cd
cd — это встроенная команда bash
amnesia@amnesia:~$ type gpg
gpg является /usr/bin/gpg
Посмотреть какой интерпретатор командной строки используется пользователем можно с помощью просмотра значения переменной окружения $SHELL
amnesia@amnesia:~$ echo $SHELL
/bin/bash
Посмотреть установленные в системе интерпретаторы командной строки можно таким образом:
amnesia@amnesia:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/usr/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
По умолчанию в дистрибутивах Linux в качестве интерпретатора командной строки используется bash.
В терминале с левой стороны мы видим приглашение командной строки amnesia@amnesia:~$
которое означает имя_пользователя@имя_хоста:текущий_каталог$
. $
означает что это обычный пользователь, а не администратор системы. Для администратора приглашение командной строки будет выглядеть следующим образом: root@amnesia:~#
.
Настройки Bash.
В системе Bash настраивается с помощью конфигурационного файла /etc/bash.bashrc но лучше не внисить в него изменений, а настраивать пользовательский конфигурационный файл ~/.bashrc находящийся в домашнем каталоге пользователя.
По умолчанию история команд записывается только при закрытии терминала, а не после каждой команды. Для того что бы это исправить редактируем nano ~/.bashrc
, добавляем в него строчки
shopt -s histappend
PROMPT_COMMAND='history -a'
Для исправления ошибок орфографии при написании команд добавляем строку
shopt -s cdspell
Для записи многострочных команд в одну строку добавляем
shopt -s cmdhist
При изменении размера окна терминала выведенный текст переноситься некорректно и перекрывает приглашение командной строки. Для того что бы это исправить добавляем строку
shopt -s checkwinsize
Для того что бы в историю команд не попадали очевидно не нужные, добавьте строку
export HISTIGNORE="&:ls:cd:[bf]g:history:exit"
Строка
export HISTSIZE=5000
задаёт количество сохраняемых в истории команд.
export HISTFILESIZE=5000
задаёт размер файла .bash_history в который сохраняется история команд.
export HISTCONTROL=ignoreboth:erasedups
Задаёт то что попадает в историю команд.
ignorespace — игнорирует сохранение в истории команд начинающихся с пробела
ignoredups — игнорировать дубликаты предыдущих записей
ignoreboth — оба эти параметра одновременно
erasedups — удаляет дубликаты текущей команды из истории команд
Для применения настроек сохранённых в файле ~/.bashrc без выхода из bash можно применить команду amnesia@amnesia:~$ source ~/.bashrc
.
Поиск по истории команд можно производить с помощью горячих клавиш <Ctrl>+<R> или командой amnesia@amnesia:~$ history | grep фрагмент_искомой_команды
.
Отключить ведение истории
amnesia@amnesia:~$ set +o history
Включить ведение истории
amnesia@amnesia:~$ set -o history
Замена командного интерпретатора.
Для более удобной работы в терминале заменим командный интерпретатор по умолчанию Bash на более функциональный zsh.
Устанавливаем zsh.
amnesia@amnesia:~$ sudo apt install zsh
Устанавливаем фреймворк oh-my-zsh
amnesia@amnesia:~$ sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Для замены интерпретатора командной строки используем команду chsh -s /usr/bin/zsh
Клонируем репозиторий с плагином zsh-autosuggestions для автодополнения из истории команд
amnesia@amnesia:~$ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
Включаем плагин zsh-autosuggestions
nano ~/.zshrc
добавляем в конфигурационный файл строчку
plugins=(zsh-autosuggestions)
Перечитываем конфигурационный файл.
➜ ~ source ~/.zshrc
В строчке ZSH_THEME="robbyrussell"
можно поменять тему на более удобную из тех что лежат в каталоге ~/.oh-my-zsh/themes
Настройки сохранения истории:
HISTSIZE=5000
SAVEHIST=5000
setopt HIST_IGNORE_SPACE
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_REDUCE_BLANKS
Работают аналогичным Bash образом, HIST_IGNORE_SPACE
удаляет команду с пробелом в начале после ввода следующей.
https://gekkk.co/i/decab3d456c1f5047d55d5f8dc4db70f

https://gekkk.co/i/718d78b0373ebd14c29606c7206cec67
