История и завершение команд

Вам не потребуется много времени чтобы понять, что повторять ввод одной и той же команды, как минимум неудобно. В Linux, так как вы можете объединять в одной строке несколько сложных команд, одна мелкая ошибка может похоронить весь набранный текст команды.

Одним решением этой проблемы является история выполнения команд. С помощью клавиш-стрелок вверх и вниз, вы можете воспользоваться введенными ранее командами.

Попробуйте это, вернувшись к файлу sneakers.txt (созданному в разделе Использование перенаправления. Всё же, в первый раз, вам придётся ввести с клавиатуры:

cat sneakrs.txt

Конечно же ничего не происходит, так как нет такого файла, sneakrs.txt. Нет проблем. Просто нажмите стрелку вверх чтобы вернуть команду, затем нажимая стрелку влево, перейдите к позиции, в которой вы пропустили "e." Вставьте эту букву и нажмите [Enter] ещё раз.

Теперь вы видите содержимое файла sneakers.txt.

По умолчанию, в файле истории команд оболочки bash сохраняются 500 команд.

ПодсказкаПеременная окружения, задающая размер истории
 

Выполнив в приглашении оболочки команду env, вы увидите переменную окружения, определяющую размер истории командной строки. Строка, в которой написано HISTFILESIZE=500 показывает количество команд, которое запоминает bash.

История команд в действительности хранится в файле с именем .bash_history в вашем домашнем каталоге. Вы можете просмотреть его разными способами: воспользовавшись pico, cat, less, more, и т.д..

Будьте готовы к тому, что файл окажется большим.

Прочитайте его с помощью more:

more .bash_history

Чтобы перейти к следующему экрану, нажмите клавишу [Space]; чтобы вернуться к предыдущему нажмите [b]; для выхода нажмите [q].

ПодсказкаПоиск команды,использованной ранее
 

Вам нужно найти команду в файле истории, но вы не хотите тратить время на утомительное нажатие клавиш-стрелок или пролистывание файла? Воспользуйтесь grep, мощной утилитой поиска (описанную в разделе Команда grep. Так вы сможете быстро найти ранее выполненную команду: Найдите команду, которая выглядела так: cat sneak-что-то ещё. Вы использовали эту команду, и скорее всего она сохранилась в вашем файле истории. Введите в приглашении командной строки:

history | grep sneak

Ещё одним, экономящим время, инструментом является завершение команды Если вы введёте часть имени файла, команды или пути, а затем нажмёте клавишу [Tab], bash предложит вам оставшуюся часть файл/пути или выдаст звуковой сигнал. Если вы услышали звуковой сигнал, просто нажмите [Tab] ещё раз, и вы получите список файлов/путей, соответствующих введенному тексту.

Например, если вы позабыли команду updatedb, но помните часть этой команды, выполните su чтобы стать root, затем в приглашении оболочки введите up, нажмите клавишу [Tab] дважды и вы увидите список возможных окончаний, включающий updatedb и uptime. Если вы добавите букву "d" к строке up и нажмете клавишу [Tab] снова, ваша команда будет автоматически завершена.