Для многих Linux-дистрибутивов в качестве командной оболочки по умолчанию используется Bash. Часто, в процессе работы с данной оболочкой "достают" те или иные неудобства, но на поиски их решения либо нет времени, либо просто много лени... В данном выпуске описаны некоторые раздражающие в работе моменты и возможные пути их решения.
1. Затирание истории команд
Если вы работаете в терминале, то при открытии второго терминала последний не будет "помнить" тех команд, что вы вводили только что в первом. К тому же, если вы закроете первый терминал, а чуть позже - второй, то сохранится только история команд второго терминала (последнего закрытого).
Так происходит потому что запись истории команд происходит в момент закрытия терминала, - а не после каждой введенной команды.
Решение:
В файл ~/.bashrc добавить такие строки:
shopt -s histappend
PROMPT_COMMAND='history -a'
Это приведет к тому, что Bash впредь будет дополнять историю команд, а не перезаписывать ее.
2. Случайные опечатки
Бывает, что при быстром наборе команды, вы пишете, например, "ect" вместо "etc" - и узнаете об ошибке только набрав километровой длины строку и нажав Enter...
Решение:
В этом случае может помочь указание в файле .bashrc такой строки
shopt -s cdspell
Теперь после ввода команды "cd /ect" вы попадете в каталог "/etc"
3. Дубликаты команд в хистори
Часто в работе приходится давать несколько одинаковых команд подряд. Например "cd .." или "ps ax | grep something". В результате, история команд захламляется дубликатами строк, после чего бывает непросто добраться до истории команд, введенных ранее.
Решение:
добавить в .bashrc строку
export HISTCONTROL="ignoredupes"
Это избавит от записи в истории дубликатов команд. Можно пойти еще дальше, и запретить запись в историю команд ls, bg, fg и exit. Делается это добавлением строки
export HISTIGNORE="&:ls:[bf]g:exit"
4. Многострочные команды разбиваются в истории на несколько строк
При наборе команды в несколько строк, она сохраняется в истории как набор не связанных между собой строк. Что бывает совсем неудобно.
Решение:
Добавить в файл .bashrc строку
shopt -s cmdhist
После этого можно будет вызывать многострочные команды из хистори одной строкой.
5. Быстрый поиск команды в хистори
Чтобы найти какуюлибо команду (например, ping) в истории, можно сделать так:
history | grep "foo"
Но это неудобно и совсем не функционально.
Решение:
Нажать комбинацию клавиш CTRL+R - после этого найти нужную команду по вводимому сочетанию букв.
6. Как перейти в последнюю директорию?
При работе часто возникает ситуация, когда нужно сделать что-либо, а для этого приходится метаться между двумя директориями. Каждый раз набирать имя директории (пусть даже используя автодополнение) - неудобно.
Решение:
Использовать команду
cd -
После чего вы перейдете в директорию, в которой только что были (до выполнения этой команды).
7. Как обратиться к объекту, с которым только что работал?
Представим ситуацию: сисадмин проводит неспешный осмотр каталогов своих пользователей, вытирая в процессе "ненужный хлам" - например, заготовленные непосильным трудом несколько гигабайт мп3-музыки. Положим, что делает он это примерно так:
ls /home/user/mp3
rm -rf /home/user/mp3
В данном случае будет полезно воспользоваться таким сочетанием клавиш:
ESC . (нажать "ESC", а потом "." последовательно)
Как результат, сработает автодополнение, используя объект, к которому было последнее обращение. В данном случае, если набрать команду "ls /home/user/mp3", затем набрать "rm -rf" и потом нажать последовательно ESC и . - то после набранного "rm -rf" командная строка автоматически дополнится "/home/user/mp3".
3 ответов
Azazelo
Декабрь 26th, 2007 в 7:29 дп
1export HISTCONTROL=”ignoredupes”
s/ignoredupes/ignoredups/
Админ
Декабрь 26th, 2007 в 9:11 дп
2Да, действительно. Спасибо за поправку - исправил.
Петр
Декабрь 27th, 2007 в 15:27 пп
3Удобно так же использовать восклицательный знак.
history | grep for
947 for f in `find . -type f`; do echo $f; cat $f >/dev/null; done
!947 Исполнит эту команду.
RSS комментарии · TrackBack URI
Оставить комментарий
Рубрики
Архив
Ссылки
Meta
Популярные статьи
Календарь
Интернет Юмор ад английский борьба видео волшебник грипп гуреев дерево жизнь изучение иностранный история книги поступки работа рай рекомендую словарь спамер стандарт стихи счастье температура тенере украина хаб цифровой чат язык blu-ray dc dvd grey hd hub lists postfix sony spam toshiba verlihub wordpress