Удобная работа в Bash
Для многих Linux-дистрибутивов в качестве командной оболочки по умолчанию используется Bash. Часто, в процессе работы с данной оболочкой «достают» те или иные неудобства, но на поиски их решения либо нет времени, либо просто много лени… В данном выпуске описаны некоторые раздражающие в работе моменты и возможные пути их решения.
1. Затирание истории команд
Если вы работаете в терминале, то при открытии второго терминала последний не будет «помнить» тех команд, что вы вводили только что в первом. К тому же, если вы закроете первый терминал, а чуть позже – второй, то сохранится только история команд второго терминала (последнего закрытого).
Так происходит потому что запись истории команд происходит в момент закрытия терминала, – а не после каждой введенной команды.
Решение:
В файл ~/.bashrc добавить такие строки:
PROMPT_COMMAND=’history -a’
Это приведет к тому, что Bash впредь будет дополнять историю команд, а не перезаписывать ее.
2. Случайные опечатки
Бывает, что при быстром наборе команды, вы пишете, например, «ect» вместо «etc» – и узнаете об ошибке только набрав километровой длины строку и нажав Enter…
Решение:
В этом случае может помочь указание в файле .bashrc такой строки
Теперь после ввода команды «cd /ect» вы попадете в каталог «/etc»
3. Дубликаты команд в хистори
Часто в работе приходится давать несколько одинаковых команд подряд. Например «cd ..» или «ps ax | grep something». В результате, история команд захламляется дубликатами строк, после чего бывает непросто добраться до истории команд, введенных ранее.
Решение:
добавить в .bashrc строку
Это избавит от записи в истории дубликатов команд. Можно пойти еще дальше, и запретить запись в историю команд ls, bg, fg и exit. Делается это добавлением строки
export HISTIGNORE=»&:ls:[bf]g:exit»
4. Многострочные команды разбиваются в истории на несколько строк
При наборе команды в несколько строк, она сохраняется в истории как набор не связанных между собой строк. Что бывает совсем неудобно.
Решение:
Добавить в файл .bashrc строку
После этого можно будет вызывать многострочные команды из хистори одной строкой.
5. Быстрый поиск команды в хистори
Чтобы найти какуюлибо команду (например, ping) в истории, можно сделать так:
Но это неудобно и совсем не функционально.
Решение:
Нажать комбинацию клавиш CTRL+R – после этого найти нужную команду по вводимому сочетанию букв.
6. Как перейти в последнюю директорию?
При работе часто возникает ситуация, когда нужно сделать что-либо, а для этого приходится метаться между двумя директориями. Каждый раз набирать имя директории (пусть даже используя автодополнение) – неудобно.
Решение:
Использовать команду
После чего вы перейдете в директорию, в которой только что были (до выполнения этой команды).
7. Как обратиться к объекту, с которым только что работал?
Представим ситуацию: сисадмин проводит неспешный осмотр каталогов своих пользователей, вытирая в процессе «ненужный хлам» – например, заготовленные непосильным трудом несколько гигабайт мп3-музыки. Положим, что делает он это примерно так:
rm -rf /home/user/mp3
В данном случае будет полезно воспользоваться таким сочетанием клавиш:
Как результат, сработает автодополнение, используя объект, к которому было последнее обращение. В данном случае, если набрать команду «ls /home/user/mp3″, затем набрать «rm -rf» и потом нажать последовательно ESC и . – то после набранного «rm -rf» командная строка автоматически дополнится «/home/user/mp3″.
Мой блог находят по следующим фразам

This post has 3 comments
Декабрь 26th, 2007
export HISTCONTROL=»ignoredupes»
s/ignoredupes/ignoredups/
Декабрь 26th, 2007
Да, действительно. Спасибо за поправку – исправил.
Декабрь 27th, 2007
Удобно так же использовать восклицательный знак.
history | grep for
947 for f in `find . -type f`; do echo $f; cat $f >/dev/null; done
!947 Исполнит эту команду.
Trackbacks