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
CLASSPATH CLASSPATH содержит список каталогов для поиска файлов классов Java и архивов Java
HOME Домашний каталог текущего пользователя
HOSTNAME В переменной HOSTNAME хранится имя компьютера
LANG LANG - это текущая установка локали, которая позволяет настроить командную оболочку для использования в различных странах и на различных языках
OSTYPE В переменной OSTYPE содержится описание операционной системы
PATH PATH - это список каталогов для поиска команд и приложений, когда полный путь к файлу не задан
PSn PSn (где n - число от 1 до 4) переменная хранит параметры приглашения (см. ниже)
PROMPT_COMMAND Эта команда должна быть выполнена до отображения строки приглашения Bash
PWD PWD - это полный путь к текущему рабочему каталогу
SHELL SHELL - это полный путь к текущей командной оболочке
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
Красный 31 41
Зеленый 32 42
Желтый 33 43
Синий 34 44
Маджента 35 45
Циановый 36 46
Белый 37 47
Свойства текста:
Название стиля Код
Сбросить все свойства 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
Пользовательские настройки Bash
Поднятая целина: Осваиваем и обустраиваем консоль — «Хакер»
http://www.linux.org.ru/forum/general/5592819
Цветное приглашение bash
Разноцветные терминалы
командная строка в стиле DOS
Ёлочка в командной строке
PS
если надоело стандартное приглашение в консоли, то нужно добавить в файл .bashrc
export PS1='\[\033[1;33m\][\[\033[1;34m\]\t\[\033[1;33m\]]\[\033[1;32m\]::\[\033[1;33m\][\[\033[1;35m\]\u\[\033[1;33m\]] \[\033[0;36m\]\w \[\033[1;32m\]\$\[\033[00m\] '
или
PS1="C:\$( pwd | sed 's:/:\\\\\:g' )> "