• Авторизация


Советы и подсказки по bash 13-12-2007 19:28 к комментариям - к полной версии - понравилось!


Для непосвященных, bash - командная оболочка по умолчанию во многих Linux-дистрибутивах, включая Fedora, Ubuntu, Redhat и др. Используя операционную систему Linux-семейства, вы, вероятно, используете и bash. По этой причине ниже я собрал несколько часто возникающих проблем с bash и простые способы их решения.

1. Потеря истории команд

Если открыть окно терминала и ввести несколько команд, а после открыть второе окно, то история команд bash во втором окне не будет содержать команд из первого. К тому же, если закрыть первый терминал, а затем второй, то история команд из первого терминала будет перезаписана вторым. Вдвойне неприятно!

Так происходит из-за того, что история команд записывается только при закрытии терминала, а не после каждой команды. Это можно исправить.

Для этого надо отредактировать файл .bashrc (начинающим: любой файл, начинающийся с точки, является скрытым - служит для хранения пользовательских настроек).

nano ~/.bashrc

sudo здесь не нужно, это файл пользователя, а не настройка системы. Мне нравится nano, но можно использовать любой редактор: gedit, kate, mousepad, vi или emacs

добавить строки

shopt -s histappend

PROMPT_COMMAND=’history -a’

И сохранить. (Ctrl-O для записи. “^” означает клавишу “Ctrl” в nano и других программах. ^X для выхода)

Так история команд будет добавляться к старой, а не перезаписывать ее, и запись будет происходить каждый раз в момент отображения подсказки bash.

2. Глупые ошибки в написании

Добавьте

shopt -s cdspell

опять-таки в .bashrc. Таким образом ошибки в написании (например, ect вместо etc) будут исправляться.

3. Дубликаты в истории команд

Я часто набираю cd .. несколько раз подряд, и когда я нажимаю клавишу “вверх”, чтобы вернуться к ранее введенным командам, я не хочу, чтобы мне постоянно напоминали о моих неоптимальных передвижениях по файловой системе.

Добавьте

export HISTCONTROL="ignoredups"

опять таки к .bashrc.

Или даже лучше, добавьте

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

Это позволит избавиться от дубликатов, а также от ls, bg, fg и exit, что сделает историю команд bash более читабельной.

4. Разорванные многострочные команды в истории команд

Добавьте

shopt -s cmdhist

в .bashrc, и многострочные команды будут записываться в одну строку, что облегчит редактирование.

5. Пара дополнительных советов от комментаторов

Нажмите Ctrl-R в bash, далее начните набирать команду. Так искать в истории команд гораздо быстрее, чем нажимать 300 раз “вверх”.

Также можно искать при помощи

history | grep "foo"

Команда

cd -

осуществляет возврат к последней посещенной директории - бывает полезно, когда нужно перейти куда-то чтобы что-то изменить, а затем быстро вернуться назад.

Нажатие “Esc”+”.” вызывает последний упомянутый объект. Например, если набрать cat /etc/apt/sources.list, а затем rm и нажать “Esc”+”.”, то команда будет автоматически завершена: rm /etc/apt/sources.list. Попробуйте!

Заключение

Вот несколько советов, как сделать историю команд bash удобней. Если у вас есть свои хитрости на этот счет, добавляйте в комментарии!

Извиняюсь за копипаст. Просто нашел эту статью полезной для себя и думаю, что для многих будет хорошим подспорьем.
Взято с http://linux-digg.ru/?p=11
вверх^ к полной версии понравилось! в evernote
Комментарии (6):
dandr 13-12-2007-19:41 удалить
Утащил в цитатник...


Спасибо! Последую примеру dandr :))
qmor 14-12-2007-11:14 удалить
Особенно пригодилось удаление дубликатов из истории
MasterJedi 14-12-2007-17:45 удалить
Отлично, повышаем юзабилити консоли. Спс - полезно.
15-12-2007-20:37 удалить
спасибо за заметку последнего незнал
StasikOS 17-03-2008-12:42 удалить
Еще немножко комплита из readline ) (Вместо M у кого-то подойдет Alt, у кого-то - тыцнуть Esc)
M-@ - дополнение имен хостов из /etc/hosts
M-~ - дополнение имен юзеров
M-$ - дополнение имен переменных
Ну и показ вариантов - то же самое, но начинать с ^x )


Комментарии (6): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Советы и подсказки по bash | Linux_Comunity - Linux Li Community | Лента друзей Linux_Comunity / Полная версия Добавить в друзья Страницы: раньше»