# history

Команда работает со списком выполнявшихся команд.

## СИНТАКСИС

          history ?option? ?arg arg

## ОПИСАНИЕ

Команда history выполняет действия по отношению к недавно выполненным командам, занесенным в журнал. Каждая из этих зарегистрированных команд обозначается термином "событие". Ссылаться на события в команде history можно одним из следующих способов:

1. Число. Если положительное - ссылается на событие с этим номером (все события нумеруются начиная с 1). Если число отрицательное, то оно указывает номер события относительно текущего (-1 - предыдущее, -2 - перед предыдущим и т.д.). Событие 0 ссылается на текущее событие.
2. Строка. Ссылается на наиболее позднее событие, которое удовлетворяет строке. Событие удовлетворяет строке, если оно начинается со строки, или в соответствии с правилами команды string match.

Команда history может принимать одну из следующих форм.

history
  То же самое, что команда history info, описанная ниже.
history add command ?exec?
  Добавляет аргумент command в журнал как новое событие. Если присутствует аргумент exec(или произвольное сокращение), то команда command выполняется и возвращается ее результат. В противном случае возвращается пустая строка.
history change newValue ?event?
  Заменяет описание события event на newValue. Аргумент event определяет событие, описание которого будет заменено. По умолчанию - текущее событие (даже не предыдущее!). Эта форма команды предназначается для использования в тех случаях, когда переформировывается журнал событий и позволяет заменить текущее событие (переформирование журнала) на необходимое. Команда возвращает пустую строку.
history clear
  Удаляет журнал событий. Количество запоминаемых событий (см. history keep) сохраняется. Нумерация событий начинается сначала.
history event ?event?
  Возвращает описания события event. Значение по умолчанию -1.
history info ?count?
  Возвращает в удобном для чтения виде список, состоящий из номеров и описаний событий (кроме текущего). Если аргумент count задан, то только count последних событий возвращаются.
history keep ?count?
  Команда изменяет размер журнала на count событий. Исходно в журнале сохраняются 20 последних событий. Если аргумент count не указан, команда возвращает текущее значение размера журнала.
history nextid
  Возвращает номер следующего события, которое будет записано в журнал. Полезно, например, для вывода номера события в приглашении командной строки.
history redo ?event?
  Повторно выполняет команду, указанную с помощью аргумента event. Значение аргумента по умолчанию -1. Эта команда вызывает переформирование журнала, см. ниже.

## ПЕРЕФОРМИРОВАНИЕ ЖУРНАЛА

До версии 8.0 Tcl имел весьма сложный механизм переформирования журнала. Новый механизм несколько сокращен за счет старых опций substitute и words. (Взамен добавлена новая опция clear).

Опция redo позволяет переформировывать журнал значительно проще. При ее выполнении последнее событие изменяется таким образом, что удаляется "служебная" команда history, которая реально выполнялась, а вместо нее записывается та команда, которая необходима.

Если вы хотите повторить прежнюю команду, не модифицируя журнал, выполните сначала команду history event, чтобы извлечь описание команды, а затем history add, чтобы выполнить ее.