17 янв. 2011 г.

Пользовательские настройки Bash

Bash - это интерпретатор командного языка, выполняющий команды поступающие со стандартного устройства ввода (клавиатуры).
В данной статье будут рассмотрены пользовательские и немного системных настроек, цель которых будет облегчить использование bash.

Настройки

Настройки bash хранятся в файле .bashrc в домашней директории пользователей (~).
В нем можно поменять приглашение, обработку директорий с командами, задать алиасы, загружать цветовые схемы и др.
Файл .bashrc будет рассмотрен позже.
Так же есть файлы:
~/.bash_profile - Этот файл обрабатывается при каждом входе в систему (пользователя).
~/.bash_logout - Прочитывается когда происходит выход из системы.
~/.bash_history - Хранит список используемых команд.

Помимо этих файлов есть системные настройки (опции bash). Их можно посмотреть командой set -o
Будет выведен список опций. Эти опции можно изменить с помощью той же команды set.

set [–abBCefhHkmnpPtuvx] [-o option] [argument …]

Для активации одной из опций наберите:
set -o option_name - для активации опции
set +o option_name для деактивации опции.
Список опций может меняться от версии bash.
Команда set без параметров выведет все переменные окружения.

Переменные

Список стандартных переменных:

Имя переменной Описание
BASHВ переменной BASH содержится полный путь до исполняемого файла командной оболочки Bash
BASH_VERSIONВ переменную BASH_VERSION записывается версия Bash
CLASSPATHCLASSPATH содержит список каталогов для поиска файлов классов Java и архивов Java
HOMEДомашний каталог текущего пользователя
HOSTNAMEВ переменной HOSTNAME хранится имя компьютера
LANG LANG - это текущая установка локали, которая позволяет настроить командную оболочку для использования в различных странах и на различных языках
OSTYPE В переменной OSTYPE содержится описание операционной системы
PATH PATH - это список каталогов для поиска команд и приложений, когда полный путь к файлу не задан
PSn PSn (где n - число от 1 до 4) переменная хранит параметры приглашения (см. ниже)
PROMPT_COMMANDЭта команда должна быть выполнена до отображения строки приглашения Bash
PWD PWD - это полный путь к текущему рабочему каталогу
SHELLSHELL - это полный путь к текущей командной оболочке
USER В переменной USER содержится имя текущего пользователя

HotKey в Bash

Приводятся горячие клавиши:
Ctrl-команды
Ctrl + a - переход к началу строки
Ctrl + b - аналог стрелки влево
Ctrl + c - отменить редактирование команды или прекратить работу
Ctrl + d - аналог Delete. Если строка пустая - выход из shell
Ctrl + e - переход к концу строки
Ctrl + f - аналог стрелки вправо
Ctrl + g - выход из режима дополнения
Ctrl + h - аналог BackSpace
Ctrl + i - аналог Tab
Ctrl + k - удалить всё до конца строки
Ctrl + l - очистить экран (набранная строка и даже позиция курсора остаётся)
Ctrl + r - поиск по истории набранных команд
Ctrl + t - поменять местами текущий символ с предыдущим
Ctrl + u - удалить всё до начала строки
Ctrl + v - преобразует следующую клавишу в её символьное отображение (Enter в ^M, Esc в ^[)
Ctrl + w - удалить от курсора до начала слова
Ctrl + x дважды - скачок между началом строки и текущей позицией курсора
Ctrl + x @ - Показывает возможные варианты дополнения доменного имени
Ctrl + y - вставить из буфера (все удаляемое по горячим клавишам удаляется не просто так, а в буфер)
Ctrl + z - притормозить/остановить выполнение команды в фон
Ctrl + _ - отмена последнего изменения

ALT-команды
Alt + < - к первой команде в истории (вообще к самой первой в .bash_history) Alt + > - к последней команде в истории
Alt + ? - показать весь список вариантов дополнения (аналог 2Т - см. ниже)
Alt + * - вставить все возможные варианты дополнения
Alt + / - попытатся дополнить имя файла (из имеющихся в текущем каталоге)
Alt + . - вставить последний аргумент из предыдущей команды
Alt + b - влево на слово Alt + c - сделать первую букву слова заглавной (и перейти к следующему слову)
Alt + d - удалить от текущей позиции до конца слова
Alt + f - вправо на слово
Alt + l - сделать первую букву слова строчной (и перейти к следующему слову)
Alt + n - искать по истории (но не сразу, а после полного ввода и нажатия Enter)
Alt + p - искать по истории назад
Alt + r - очистить всю строку
Alt + t - поменять слова местами
Alt + u - сделать все буквы заглавными от текущей позиции до конца слова
Alt + BackSpace - Удалить от текущей позиции до начала слова

Иные:
!! - выполнить последнюю команду в истории
!abc - выполнить последнюю команду в истории, начинающуюся на abc
!a:p - напечатать последнюю команду в истории, начинающуюся на a
!n - выполнить n-ную команду в истории
!$ - посдедний аргумент последней команды
!^ - первый аргумент последней команды
^abc^xyz - замена abc на xyz в последней команде и выполнить результат
Tab - выведет названия команд на начало введенных символов или заполнит до конца имя файла.

bashrc

Приведем на пояснениях и примерах содержимое файла для лучшего изучения.
В файлах знак - # используется для обозначения комментария. Или закрытия строки и игнорируется интерпретатором.

alias

Этот пункт позволяет создавать ссылки для команд.
Например у обычного пользователя часто имеются такие строки (у root часто нет таких строк в .bashrc):

#alias ll='ls -l'
Раскомментировав данную строку у пользователя появится команда ll, которая будет выводить файлы в один столбец с дополнительной информацией о файлах (владелец, дата).

Смена приглашения и специальные последовательности кодов

Пока показывается как сменить строку приглашения читатель узнает о переменной PS1 и ряд специальных управляющих последовательностей из ASCII.
Специальные символы задаются между \[ и \]. Существует множество переменных и команд которые могут пригодиться в bash. Строка приглашения задается в переменной PS1, а синтаксис строки специальными символами. Это дает возможность не только менять текст, но его цвет, вставлять дату и др.

Специальные символы:
\A время - часы и минуты
\d дата в формате »День_недели, Месяц, Число»
\e (управляющий символ в коде ASCII) передает окну терминала более сложные опции
\h заменяется на имя компьютера (вплоть до первой точки в DNS-имени)
\H имя хоста
\j количество задач, работающих в шелле в настоящее время
\l название терминала
\n переход на новую строку
\r возврат каретки на начало строки
\s название шелла (будет выведено, например, «bash»
\t время в 24-часовом формате (ЧЧ: MM: СС)
\T время в 12-часовом формате (ЧЧ: ММ: СС)
\@ время в 12-часовом формате (AM/PM)
\u заменяется на имя текущего пользователя
\v номер версии bash
\V номер версии bash, номер релиза, номер патча
\w путь к домашнему каталогу (~)
\W имя текущей директории
\! номер команды в истории
\# системный номер команды
\$ означает знак $ для обычного пользователя, и # для root
\\ обратный слэш
\[ начало последовательности непечатаемых символов ASCII
\] конец последовательности непечатаемых символов ASCII
$ ( ) внешняя команда
\# текущий номер команды
\nnn непечатаемый символ, у которого имеется восьмиричный код
\! номер команды в истории команд

Переменные приглашения:
PS1 - Основная строка приглашения.
PS2 - Вторичная строка приглашения.
PS3 - Приглашение при выборе в операторе select.
PS4 - Приглашение используемое в скриптах, при выводе. Например при выводе echo.
Иные:
PROMPT_COMMAND - В этой переменной задаются команды, которые будут выполняться перед первичном приглашении (PS1).
Так же не запрещены скрипты и внешние команды.

Пример первичного приглашения 1:

PS1='\h:\w\$' 
Покажет имя компьютера (в сети, или проще говоря имя хоста), имя каталога и знак доллара для обычного пользователя, и # для root пользователя.

Приемр 2:

PS1='[u][\A']\$ 
Покажет имя пользователя и время (часы и минуты) и знак доллара для обычного пользователя, и # для root пользователя.

Цвета и стили

Цвета текста и фона приглашения задаются специальными символами которые были рассмотрены выше, которые задаются в специальной последовательности.
[свойство_фона;цвет_фона;свойство_текста;цвет_текста]
< Цвета:

ЦветТекстФон
Черный 30 40
Красный3141
Зеленый3242
Желтый3343
Синий3444
Маджента3545
Циановый3646
Белый3747
Свойства текста:

Название стиля Код
Сбросить все свойства0
Повышенная яркость1
Пониженная яркость2
Подчеркнутый4
Нормальная яркость5
Инвертированный7
Скрытый8
Пример 1: Если добавить следующую строчку к переменной PS1 (начало будет иное у вас) или заменить полностью на:
PS1='\[\033[0;40;4;37m\]qwesdfrty\[\033[0m\]'
То приглашение будет содержать - qwerty белого цвета и линию подчёркивания.
Пример 2:
PS1='\[\033[0;41;0;32m\]qwerty\[\033[0m\]'
То приглашение будет содержать - qwerty зелёного цвета и без подчёркивания.



Полезные настройки

В файле etc/inputrc - настраивается ввод. Это файл для всех пользователей. Для отдельного пользователя он находиться в домашней директории (~).

Настройка истории команд

Если нужно прокручивать историю команд (клавишами PageUP, PageDown) на определённое слово. Например введение cd позволит получать из истории только введенные команды начинающиеся на cd.

В файле /etc/inputrc добавить или раскомментировать:

# alternate mappings for "page up" and "page down" to search the history
 "\e[5~": history-search-backward
 "\e[6~": history-search-forward

Не забывайте так же про горячею комбинацию ctrl + r 

Настройка Tab

Если нужно что бы нажимать Tab нужно было один раз, то в etc/inputrc.
set show-all-if-ambiguous On
 
Исправление регистра в аргументах функций

Например замену Books на books.
В ~./bashrc:
shopt -s nocaseglob

Комментариев нет:

Отправить комментарий