Дата: 2011-02-09 15:59:43
Комментариев: 2
TipsПолезные советы по .bashrc
Просмотров: 7900
Все настройки будут проводиться в пользовательских конфигах - ~/.bash_profile и ~/.bashrc.
Большинство настроек bash по умолчанию разумны, и потому наличные файлы вполне могут быть взяты за основу. Однако путем некоторых несложных действий их можно дополнить, увеличив удобство интерактивного использования командной оболочки.

Потеря команд в .bash_history
Многие пользуются стандартными гномовским или кдешным эмуляторами терминала. У них есть возможность открывать в одном окне несколько оболочек – каждую в отдельной вкладке.

bash по умолчанию пишет в историю набранные за сеанс команды только при своем закрытии (перед самоликвидацией). Поэтому при открытии нового терминала в другой вкладке вы не увидите только что набранные команды из первой вкладки – они еще не записаны в хистори.

К тому же закрыв первый терминал, а потом второй вы не найдете в истории команд набранных в первом терминале. Потому что по умолчанию bash не дописывает файл .bash_history, а переписывает.

Исправить ситуацию можно, дописав в конфигурационный файл ~/.bashrc пару строк

shopt -s histappend
PROMPT_COMMAND='history -a'

Теперь каждая введенная вами команда будет писаться в историю сразу же.

Самая большая библиотека руководств и инструкций по эксплуатации и ремонту бытовой техники, автомобилей и сотовых телефонов.
Эвристическое исправление ошибок директорий
Если дописать такую строчку

shopt -s cdspell

то bash будет пытаться исправлять допущенные вами опечатки (пропуски и перестановки символов, например /ect/inet.d вместо /etc/init.d в пути у команды cd. Не бойтесь, у rm такая фича работать уже не будет. Только у cd.

Не писать в историю подряд идущие строки-дубликаты
Пишем в ~/.bashrc

export HISTCONTROL="ignoredups"

А если вы не хотите, чтобы в историю попадали вызовы каких-то "неинформативных" команд, то их логирование можно запретить:

export HISTIGNORE="&:ls:[bf]g:exit"

После этой команды в хистори не будут писаться команды &,ls, bg, fg, exit. Можно дописать и свои, через двоеточие, можно использовать шаблоны.

Не разрывать многострочные команды
Еще команда в конфигурационный файл

shopt -s cmdhist

Поиск по истории команд
Иногда команды бывают большими и сложными, и чтобы заново ее не писать и не искать по истории 100 раз нажимая "вверх", можно воспользоваться поиском.

Если вы помните кусочек команды которую хотите найти, то можно просто нажать в bash’e комбинацию Ctrl + R и набрать этот кусочек. bash вам покажет последнюю команду с такой подстрокой. Можно продолжать нажимать Ctrl + R и bash будет выдавать более старые подходящие команды, подходящие под искомую строку.

После применения витаминов «Упругость и сияние» от inneov fermete кожа становится гладкой и упругой, мягкой и сияющей, здоровой и молодой.
Вернуться в предыдущую директорию
Когда мы работаем в какой-то директории, и нам нужно "выбраться" в другую директорию, что-то там поделать и вернуться назад, можно воспользоваться "cd -", например

$ cd /var/www/html
$ cd /etc/
$ vi my.cnf
$ cd -
/var/www/html
$

Эта команда вернет нас в директорию где мы были раньше.

Поиск по истории команд
Создаём в домашней папке пользователя скрытый файл .inputrc следующего содержания:

"\e[A": history-search-backward
"\e[B": history-search-forward

Набираем начало любой команды, жмём кнопочку Вверх - находится первая команда, еще раз - следующая. Намного удобнее чем искать комбинацией Ctrl+R.

Дата выполнения в истории команд bash
По умолчанию bash, а точнее его утилита history, не сохраняет в .bash_history время исполнения каждой команды.

Итак, пишем в ~/.bashrc строчку

export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S '

После этого в .bash_history перед каждой командой появится коментарий с цифрой - временем выполнения этой команды в формате timestamp
А команда history будет выдавать историю данных с датой в формате, который мы переменной задали (в похожем формате выдают дату и время утилита ls)
теги: bash

2 комментария

2011-09-21 16:05:05 Ирек

Интересно) надо попробовать
2013-05-28 22:37:24 A. Mxtnr

Wow!

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