history

Из Википедии, бесплатной энциклопедии

history — команда в Unix-системах, которая позволяет просмотреть историю работы пользователя с командной строкой. Появилась в оригинальной Berkely Unix csh (2BSD), где являлась встроенной. Улучшение интерактивности было одной из основных задач разработки csh, поэтому в ней можно выделить целый набор функций, касающийся работы с историей, в частности, при редактировании текущей команды допускается подстановка последней команды и замена в ней подстроки с помощью регулярного выражения. С появлением GNU History Library (в настоящее время является частью GNU Readline) интерактивные расширения для работы с историей команд появились практически во всех коммерческих оболочках.

Часто бывает удобна в тех случаях, когда нужно выяснить ход выполненных ранее действий или же вспомнить забытое название когда-то использованной команды.

Вывод состоит из списка

  • ID действия
  • Время (не все оболочки)
  • Команда

По умолчанию, отображается список из полутора-двух десятков последних команд.

В ранних версиях Unix команда history была отдельной программой. Однако большинство оболочек уже давно включают команду history как встроенную оболочку, поэтому отдельная программа больше не используется.

Механизм работы[править | править код]

Команда работает с архивом команд, хранящимся в файле в домашнем каталоге пользователя. Название файла определяется значением переменной окружения HISTFILE, а точный формат записи в файле зависит от конкретной оболочки и опций её сборки и может включать время начала и продолжительность выполнения команды в секундах.

Во время работы интерактивная оболочка хранит историю выполнения команд текущей сессии в буфере оперативной памяти, который записывается в архивный файл при нормальном завершении работы. Этот буфер используется как для самой команды history, так для интерактивных расширений (подстановка слов с префиксом '!') и редактирования, в частности, командами возврата к предыдущей или следующей команде. При запуске оболочка заполняет этот буфер командами из архивного файла. Для сохранения истории текущей сессии обычно необходимо существование файла архива на диске, и, если он не был создан при создании пользователя автоматически, его нужно создать вручную.

В большинстве современных оболочек существуют опции, управляющие процессом записи истории на диск (максимальный размер файла, замена содержимого архива или добавление данных текущей сессии, периодическое сохранение истории во время работы, синхронизация содержимого между несколькими одновременными сессиями, исключение последовательных повторений, удаление лишних пробелов и т.п).

Ссылки[править | править код]

  1. Using History Interactively. GNU bash manual.
  2. GNU History Library. GNU readline manual.
  3. Zsh history options. Z shell online manual.