мелкий тюнинг bash'а
Создано: 17-02-2009 17:33:04 изменено: 26-06-2009 07:41:43  Метки: bash
from не помню :(
Бывает так, что при работе с оболочкой 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:"

Как видите, аргументы разделяются ":" и заключаются в двойные кавычки.
1673 просмотров комментировать