Бывает так, что при работе с оболочкой bash через терминал хочется разного удобства.
В первую очередь, лично мне не нравится, что для просмотра возможных вариантов
автозаполнения по tab'у нужно колотить два раза подряд. Исправить это можно, открыв
файл ~/.inputrc(если изменения нужны для всех пользователей по умолчанию, то тогда - /etc/inputrc)
на редактирование и добавив следующую строчку:
set show-all-if-ambiguous On
Далее. Лично меня раздражает, что когда ходишь стрелками по истории команд,
вываливается всё подряд. Следующие строки позволяют выводить из истории только те команды,
которые начинаются с уже набранных букв:
"\e[A": history-search-backward "\e[B": history-search-forward
Переходим к файлу конфигурации bash'а. На всякий случай напомню (здесь это уже проскакивало)
- чтобы включить запись сразу с нескольких терминалов, откройте на редактирование ~/.bashrc
(или, опять же, если нужно применить для всей системы - /etc/bashrc) и добавьте в
него следующую строчку:
shopt -s histappend
Далее. Чтобы bash за Вас мог исправлять мелкие очепятки в аргументах команд
(вроде src вместо scr для cd), добавьте строчку:
shopt -s cdspell
А чтобы исправлял регистр в аргументах (например, на Music вместо music для того же cd), добавьте:
shopt -s nocaseglob
Это что касается личных предпочтений. Далее же следует краткий пересказ фич, рассмотренных в этой статье -
http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/
1. Отображать время в истории команд:
HISTTIMEFORMAT='%F %T '
2. Интерактивный поиск по истории команд:
нажмите ^r и поиграйтесь со вводом - это забавно :-)
3. Возможность выполнить уже выполненные команды:
a.Стрелка вверх-вниз - проход по истории команд назад-вперёд
b. !! - выполнить предыдущую команду
c. !-1 - аналогично b.
d. ^p - ^n - аналогично a (здесь и далее ^ - ctrl)
4. Команда history выводит всю сохранённую историю команд. Команда !N, где N - номер
команды в истории - выполняет эту команду.
5. Чтобы выполнить предыдущую команду, начинающуюся с определённых слов, выполните:
!<command>
Например, если Вы пару минут назад выполняли mount, то ввод:
!mou
выполнит тот же самый mount с тем же самыми параметрами
6. Количество сохраняемых команд в файле истории определяется этими переменными:
HISTSIZE=500 HISTFILESIZE=500
Личное примечание - судя по всему, значение второй строки - максимальный размер файла истории в килобайтах.
7. Чтобы изменить местоположение файла для сохранения истории команд
(по умолчанию это - ~/.bash_history), добавьте следующую строчку:
HISTFILE=/path/to/your/histfile
8. Чтобы одинаковые команды не сохранялись в истории, добавьте строчку:
HISTCONTROL=ignoredups
(например, после cd..ls..ls..ls..cd останется cd..ls..cd)
9. При строчке:
HISTCONTROL=erasedups
стираются все повторения, в том числе идущие не подряд, но в разной последовательности.
(например, после cd..ls..cd..ls останется cd и ls)
10. Не добавлять запись в историю команд, если команда начинается с пробела:
HISTCONTROL=ignorespace
11. Очистить файл истории можно командой
history -c
12. Конструкция !!:$ подставляет в аргумент текущей команды аргумент от предыдущей. Например:
ls dir cd !!:$ #результатом будет cd dir и в историю запишется именно эта команда
Если аргументов у предыдущей команды было несколько, то, чтобы выцепить только первый аргумент
для текущей команды, нужно использовать конструкцию !^. Например:
cp file file.bckp vim !^ #результатом будет vim file
13. Чтобы подставить аргумент определённой, уже вызванной команды, в текущую, можно
воспользоваться конструкцией !<команда>:<номер аргумента>. Например:
mv file file.bckp files <другие команды> cd !mv:3 #результатом будет cd files
Если необходимо использовать последний аргумент, то вместо <номер аргумента> нужно
подставить не число, а $
14. Чтобы отключить сохранение истории, добавьте строчку:
HISTSIZE=0
15. Чтобы отключить сохранение определённых команд (например, самых частоиспользуемых,
чтобы они не загромождали файл истории, таких как cd, ls, pwd), добавьте следующую строку:
HISTIGNORE="cd:ls:ls -la:pwd:"
Как видите, аргументы разделяются ":" и заключаются в двойные кавычки.