Конечно, есть и механизм истории bash. Если включено, bash будет хранить файл ~/.bash_history
который содержит все введенные вами командные строки, вплоть до максимального количества записей.
Также есть команда fc
для просмотра истории, не просматривая файл, например fc -l 1 | fgrep echo
для вывода списка всех строк истории, содержащих echo
где угодно.
Все это, конечно, можно настроить:
HISTFILE
устанавливает имя файла истории вместо ~/bash_history
HISTSIZE
устанавливает максимальное количество записей, которые хранятся в истории (по умолчанию 500).
HISTCONTROL
позволяет немного настроить то, что хранится в истории, а что нет. Установив HISTCONTROL=ignoreboth
повторяющиеся записи сохраняются только один раз, и вы можете предотвратить отображение отдельных командных строк в истории, добавив пробел (например, ls
вместо ls
).
Мне нравится держать HISTSIZE
настолько большим, насколько я могу, не замедляя свою машину, это обычно около 50000 или около того, прежде чем она становится заметной. Таким образом, я могу вернуться на месяцы, если я не запомнил этот сложный трубопровод или что-то еще, и мне это нужно снова.
(Я сам не использую bash, только zsh, но из того, что я понял из man-страницы, механизм похож. Кто-нибудь, пожалуйста, поправьте меня, если я ошибся в деталях. )