Используя операционную систему 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 удобней. Если у вас есть свои хитрости на этот счет, добавляйте в комментарии!