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
этот приём работает, что называется, "из коробки" (хотя здесь его, напротив, можно и запретить в профильных файлах).
Содержание . .