Команда history
никогда не работает с файлом, только с его списком истории в памяти. Вы можете только читать ( r
), писать ( -w
) и добавлять ( -a
) этот список в файл или из него, а затем открывать или управлять списком в памяти. Чтение из файла заменит или расширит историю в текущем сеансе оболочки.
Вы можете, однако, создать другую оболочку и управлять ее историей, чтобы запустить любую команду по вашему желанию, не затрагивая историю вашей текущей оболочки:
bash -c 'history -cr file ; history'
или
( history -cr file ; history )
Вы можете добавить любые параметры истории, которые хотите, во вторую ] history
в любом случае. Если вы будете делать это часто, вы можете определить функцию, принимающую файл в качестве аргумента и запускающую версию подоболочки:
histfile() {
( history -cr "$1" ; history )
}
Если вы заинтересованы в отображении сохраненных временных меток, вам также необходимо установить HISTTIMEFORMAT
. Если вы используете подоболочку и получаете метки времени в оболочке хоста, они должны быть там автоматически, но для версии bash -c
или сценария вам необходимо установить ее:
bash -c 'history -cr file ; HISTTIMEFORMAT="%Y%m%d%H%I%S " history'
Вы также можете экспортировать
переменную из родительской оболочки.