Удобная работа в Bash

The answer you entered to the math problem is incorrect.

Для многих 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″.

Источник:  http://storinka.com.ua/2007/12/25/udobnaya-rabota-v-bash/

P.S.: мелочи, но очень приятные! Автор молодец!:) 


Комментарии

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

Пример: 1+1, ответ: 2
Содержание этого поля является приватным и не предназначено к показу.

Ñòàðí/A>