Spec-Zone.ru › Bash

Встроенные команды Bash для работы с историей

​

Bash предоставляет две встроенные команды для работы со списком истории и файлом истории.

fc
fc [-e ename] [-lnr] [first] [last]
fc -s [pat=rep] [command]

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

При выводе списка значение first или last, равное 0, эквивалентно -1, а -0 эквивалентно текущей команде (обычно команде fc); в противном случае 0 эквивалентно -1, а -0 недопустимо.

Если last не указано, для вывода списка ему присваивается номер текущей команды, а в остальных случаях — значение first. Если first не указано, при редактировании ему присваивается номер предыдущей команды, а при выводе списка — −16.

Если указан флаг -l, команды выводятся в стандартный поток вывода. Флаг -n подавляет вывод номеров команд. Флаг -r меняет порядок команд в списке на обратный.

В противном случае fc запускает редактор, указанный в ename, для файла с этими командами. Если ename не указан, fc использует значение следующего раскрытия переменной: ${FCEDIT:-${EDITOR:-vi}}. Это означает, что используется значение переменной FCEDIT, если она задана, иначе значение переменной EDITOR, если она задана, или vi, если не задана ни одна из них. После завершения редактирования fc считывает файл с отредактированными командами, выводит их и выполняет.

Во второй форме fc повторно выполняет command, заменяя каждое вхождение pat в выбранной команде на rep. Значение command интерпретируется так же, как описанное выше значение first.

Полезный псевдоним для команды fc — r='fc -s': при вводе «r cc» выполняется последняя команда, начинающаяся с cc, а при вводе «r» повторно выполняется последняя команда (см. раздел Псевдонимы).

При использовании первой формы возвращается ноль, если не обнаружен недопустимый параметр и first или last не указывают на строки истории за пределами допустимого диапазона. При редактировании и повторном выполнении файла команд возвращается значение последней выполненной команды; если при работе с временным файлом возникает ошибка, возвращается код ошибки. При использовании второй формы возвращается код завершения повторно выполненной команды, если только command не указывает на допустимую запись истории; в этом случае fc возвращает ненулевой код завершения.

history
history [n]
history -c
history -d offset
history -d start-end
history [-anrw] [filename]
history -ps arg

Если параметры не указаны, вывести список истории с номерами. Записи, перед которыми стоит «*», были изменены. Аргумент n выводит только последние n записей. Если переменная оболочки HISTTIMEFORMAT задана и не является пустой, она используется как строка формата для strftime(3), чтобы выводить временную метку, связанную с каждой отображаемой записью истории. Если history использует HISTTIMEFORMAT, между форматированной временной меткой и записью истории не выводится пробел.

Если параметры указаны, они имеют следующие значения:

-c

Очистить список истории. Этот параметр можно использовать вместе с другими параметрами для замены списка истории.

-d offset

Удалить запись истории в позиции offset. Если offset положительное, его следует указывать так, как оно отображается в списке истории. Если offset отрицательное, оно интерпретируется относительно значения, на единицу большего последней позиции истории: отрицательные индексы отсчитываются от конца истории, а индекс «-1» указывает на текущую команду history -d.

-d start-end

Удалить диапазон записей истории от позиции start до позиции end включительно. Положительные и отрицательные значения start и end интерпретируются так, как описано выше.

-a

Добавить «новые» строки истории в файл истории. Это строки истории, введённые с начала текущего сеанса Bash, но ещё не добавленные в файл истории.

-n

Считать из файла истории строки, которые ещё не считывались, и добавить их в текущий список истории. Это строки, добавленные в файл истории с начала текущего сеанса Bash.

-r

Считать файл истории и добавить его содержимое в список истории.

-w

Записать текущий список истории в файл истории, перезаписав его.

-p

Выполнить подстановку истории для аргументов arg и вывести результат в стандартный поток вывода, не сохраняя его в списке истории.

-s

Добавить аргументы arg в конец списка истории как одну запись. Перед добавлением аргументов arg последняя команда в списке истории удаляется.

Если с параметрами -w, -r, -a или -n указан аргумент filename, Bash использует filename в качестве файла истории. Если аргумент не указан, используется значение переменной HISTFILE. Если HISTFILE не задана или пуста, эти параметры не действуют.

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

Возвращается 0, если не обнаружен недопустимый параметр, не произошла ошибка при чтении или записи файла истории, в качестве аргумента -d не указано недопустимое значение offset или диапазон, а подстановка истории, переданная в качестве аргумента -p, выполнена успешно.

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Bash-History-Builtins.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API