LM 16 Cinnamon: настройка терминала
Терминал для линуксоида должен быть как необходимый инструмент для мастерового человека или личное оружие для военного: вычищен до блеска, настроен как часы, безотказен и привычен до автоматизма.
С 2010 года я пользуюсь gnome-terminal, о нем и пойдет речь (хотя, наверное, многое будет применимо и к другим функционально полноценным терминалам, вроде konsole и xfce4-terminal).
Содержание
Внешний вид
Нынешний gnome-terminal, распрощавшийся со всякими зверушками и цитатами, по умолчанию лишился даже меню. Его, как и настройки, можно включить из контекстного меню по правой кнопке мыши.
Внешний вид — сугубо личное, поэтому я просто опишу здесь свои настройки и предпочтения.
Идем в "Настройки профиля", выбираем шрифт (у меня Droid Sans Mono 11), закрываем. Таскаем терминал за правый нижний угол и смотрим на циферки размера, возникающие при этом. Получив нужный результат, снова идем в "Настройки профиля" и вписываем там этот размерчик. Имейте ввиду, каждый раз при смене шрифта и/или кегля размер придется снова корректировать.
Далее выбираем остальные параметры, как у меня на картинках ниже (вкладки "Заголовок и команда", "Фон" и "Совместимость" обычно оставляю как есть).
У меня, при наличии каталога $HOME/Backup/SysConfigs, это выглядит так:
При необходимости все настройки можно будет восстановить на другой системе одной командой:
Горячие клавиши
Делаем видимым меню терминала по ПКМ, в меню "Правка → Комбинации клавиш" снимаем обе верхних галки (иначе по F10 будет не MC закрываться, а открываться меню) и меняем Скопировать/Вставить на привычные Ctrl-C и Ctrl-V:
Остальное — по вкусу (я предпочитаю выставить на создание вкладки более привычное Ctrl-Alt-N).
Поведение
1. Автодополнение
По умолчанию, при введении нескольких букв и нажатии на Tab терминал выбрасывает списком все команды, начинающиеся на введенные буквы, и опять возвращает приглашение. Это, ежу понятно, не очень-то удобно.
Чтобы по Tab терминал последовательно выводил команды и оставался в состоянии готовности выполнить команду, нужно поправить системный файл /etc/inputrc, вписав в него предпоследней строкой следующее:
Кроме того, очень удобна фишка, подсказанная где-то А. Федорчуком: внесение в тот же файл /etc/inputrc еще двух строк:
"\e[B": history-search-forward
Это позволяет, набрав некую команду, стрелками "вверх" и "вниз" перелистывать ее историю.
В результате последние строки файла /etc/inputrc должны выглядеть так:
TAB: menu-complete # Совет Федорчука: позволяет стрелками перебирать историю команды "\e[A": history-search-backward "\e[B": history-search-forward $endif
Если вы не имеете доступа к правам root'a, то всё вышеописанное применимо к настройкам вашего аккаунта. В этом случае вносим описанные изменения в файл ~/.inputrc, а если такого в вашей домашней директории нет, создаём его, причём он может состоять только из вышеприведенных строк.
Кроме того, в файл ~/.bashrc нужно дописать такую секцию:
# enable bash completion in interactive shells if [ -f /etc/bash_completion ]; then . /etc/bash_completion fi
Но вообще-то о файле ~/.bashrc, одном из важнейших для нормальной жизни в системе, разговор будет отдельный.
Мне вполне достаточно таких настроек автодополнения в терминале, а если вам мало — читайте здесь, там и далее, как говорится. А также курите (может быть, в первую очередь) man readline.
2. Алиасы
2.1 Что такое алиасы и с чем их едят
Алиасы — при умеренном и обдуманном применении — вещь чрезвычайно удобная. Алиас представляет собой короткую кличку для развернутой команды. Причем если для "моно"-команд можно обходиться автодополнением, то для комбинированных, состоящих из двух и более простых, да еще с опциями, алиасы — просто находка.
Предположим, мне нужно пропинговать какой-то адрес, хотя бы гугль. И желательно при этом ограничиться пятью пакетами, а также подсветить вывод. Придется забивать ручками такую команду:
И еще надо вспомнить опцию '-с'. Гораздо легче определить алиас:
чтобы потом команда ping google.com автоматически преобразовывалась в приведенную выше grc ping -c 5 google.com.
Намного удобнее набирать в терминале 'h' вместо 'history', 'g' вместо 'gedit', 'v' вместо 'vim' и т.д.
Алиасы можно писать даже по-русски. К примеру, у меня есть скриптик для определения того, каким устройством сегодня является каждый из моих четырех жестких дисков (известно, что системе udev ничего не стоит перетасовать устройства при очередной перезагрузке).
- Скрипт "disks.sh"
#!/bin/bash # disks.sh FDA=$(ls -l /dev/disk/by-id | grep -v part | awk '/ata-SAMSUNG/ { print $11 }' | tr -d ./) FDB=$(ls -l /dev/disk/by-id | grep -v part | awk '/ata-WDC_WD5000AADS/ { print $11 }' | tr -d ./) FDC=$(ls -l /dev/disk/by-id | grep -v part | awk '/ata-WDC_WD10EARS/ { print $11 }' | tr -d ./) FDD=$(ls -l /dev/disk/by-id | grep -v part | awk '/ata-ST3120813AS_5LS05YQ6/ { print $11 }' | tr -d ./) cat << EOF Сегодня у нас так: Samsung - $FDA WD_0,5T - $FDB WD_1T - $FDC Seagate - $FDD EOF
Этот простенький скриптик лежит в директории, прописанной в переменной PATH, и называется disks.sh, но гораздо легче вспомнить и напечатать слово "диски", а это легко обеспечить таким алиасом:
2.2 Где прописывать алиасы?
Алиасы можно прописать прямо в файле ~/.bashrc, однако вряд ли это хорошая идея.
Лучше вынести их в отдельный файл ~/.bash_aliases, а в ~/.bashrc прописать следующее:
# Алиасы {{{ if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi # }}}
При такой организации, во-первых, ~/.bashrc не перегружается дополнительными записями, а во-вторых, снижается риск его повреждения в результате случайной ошибки.
2.3 Как прописывать алиасы?
Формат и синтаксис файла ~/.bash_aliases не отличается от таковых для ~/.bashrc: закомментированные и пустые строки игнорируются интерпретатором.
В качестве примера приведу самую "эксплуатируемую" часть своего ~/.bash_aliases:
alias se='sudoedit' alias path='echo -e ${PATH//:/\\n}' alias as='apt show' alias h='history' alias ff='firefox' alias v='vim' alias g='gedit' alias dmesg='dmesg | ccze -A' # Требуется установить ccze alias ьс='mc' # "Исправление" раскладки alias св='cd' # "Исправление" раскладки alias gt='gthumb' alias gd='gdebi-gtk' alias lastx='last -x | grep 'shutdown' | head | ccze -A' alias rss='RSSOwl' # Алиас на симлинк в $HOME/.bin alias fz='filezilla' # Алиас на симлинк в $HOME/.bin alias mm='mplayer' alias ping='grc ping -c 5' # Требуется установить grc alias a2='aria2c -c' alias a2s='aria2c -S' # Запустить aria2c в режиме просмотра содержимого торрент-файла
2.4 Как временно отменять алиасы?
Алиас
подсвечивает вывод команды dmesg, без чего просмотр его сотен, а то и тысяч строк становится делом, мягко говоря, скучным. Однако если потребуется перенаправить вывод dmesg в файл, то при действующем алиасе мы получим жуткую кашу.
В таких случаях легко временно отменить действие алиаса, просто экранировав команду обратным слэшем вот так:
2.5 Чего следует опасаться?
Скажем, захотели мы применить алиас к команде wget и, недолго думая, определили для этого букву w.
Однако прежде чем прописывать этот алиас в ~/.bash_aliases, наберите в терминале
и вы сильно удивитесь (если, конечно, не знали об этой команде).
Вывод, думается, очевиден: задуманные алиасы надо предварительно проверять на возможные совпадения с уже существующими командами.
Ну и, кроме того, обилие алиасов затруднит их запоминание, и они из "мнемонического костыля" начнут превращаться в дополнительный напряг для памяти...