Встроенные команды 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