Tcsh: история команд

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

Для просмотра буфера истории команд существует специальная встроенная команда history, которая по умолчанию выводит список всех команд, запускавшихся ранее в этом сеансе, с нумерацией в порядке их исполнения и указанием времени запуска:

% history1	9:46	echo $tty
	2	9:47	man builtins
	3	10:47	echo $term
	4	10:54	echo $term
	5	10:55	echo $user ; echo $shell ; echo $term ; echo $tty
	6	10:59	echo $ignoreoff
	7	15:34	ls -a
	8	15:34	less .history
	9	15:42	history

Количество команд в выводе можно ограничить указанием их числа в качестве аргумента; так, при задании команды в форме

% history 5

будет выведено лишь пять последних команд из всего буфера.

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

Полный список команд в буфере может быть очень длинным, особенно, если к нему приплюсовывается еще и содержимое файла истории. При необходимости просмотреть весь вывод команды history можно по конвейеру передать какой-либо утилите постраничного просмотра, например, так:

% history | less

а некую конкретную команду -- отыскать с помощью утилиты grep:

% history | grep set

Содержимое файла ~/.history можно просмотреть и непосредственно -- это обычный текстовый файл, доступный для обработки стандартными утилитами типа less, grep и тому подобными. В принципе, ничто не препятствует его обработке с помощью неинтерактивных утилит вроде ed или sed, или даже текстового редактора.

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

Так вот, любая из команд буфера вызывается в командную строку с помощью директивы

% !#

где # -- порядковый номер команды в списке вывода history. После этого команду из истории можно запустить на исполнение или предварительно отредактировать её точно так же, как и команду, только что введённую с клавиатуры.

Для просмотра буфера истории команд можно использовать также клавиши управления курсором -- Up (назад) и Down (вперед), с помощью которых как бы "пролистываются" по одной все ранее введенные команды. Аналогичного результата можно добиться и управляющими комбинациями -- Control+P и Control+N или Meta+P и Meta+N, каждая пара из которых является аналогом пары Up и Down соответственно.

Интерактивный просмотр буфера истории в tcsh имеет очень полезную особенность: если в пустой командной строке набрать какой-либо символ и начать просматривать буфер с помощью клавиши Up или комбинации Control+P (Meta+P), то из буфера истории будут извлекаться только команды, имена которых начинаются с этого символа. Введение двух и более начальных символов ещё более сузит круг вывода. С помощью дополнительных настроек это можно реализовать и в bash (как -- описано на соответствующей странице), но в tcsh этот приём работает, что называется, "из коробки" (хотя здесь его, напротив, можно и запретить в профильных файлах).


Содержание

. .