4

Я установил переменную HISTTIMEFORMAT для хранения файла информации о временной метке .bash_history . Я могу правильно отображать историю, если использую интерактивную оболочку.

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

Пример содержимого файла: bash_history:

#45556656
pwd
#45677756
ls
#45665765
who

Команда:

$ ssh Host 'HISTFILE=~/bash_history;HISTTIMEFORMAT=" %F %T ";set -o history; history'

Выход:

235 2015-08-24 13:12 #45556656
236 2015-08-24 13:12 pwd
237 2015-08-24 13:12 #45677756
238 2015-08-24 13:12 ls

Вопросы: 1. Отметка времени одинакова для всех команд. Он устанавливает текущую метку времени.

Информация о времени из файла истории читается как команда. Таким образом, потерял фактическую информацию о метках времени команд. Как получить правильную информацию, когда я пытаюсь получить информацию через ssh или cronjob .

Примечание: я видел подобные вопросы, но ни один не дал решения моей проблемы, и никто, кто задал вопрос, не разработал сценарий.

1 ответ1

2

Вам также необходимо включить histexpand , который позволяет правильно интерпретировать временные метки, так как они начинаются с символа комментария истории:

$ ssh HOST 'HISTFILE=/tmp/bash_history;HISTTIMEFORMAT=" %F %T ";set -o histexpand -o history; history'
1   1971-06-12 01:37:36 pwd
2   1971-06-13 11:15:56 ls
3   1971-06-13 07:56:05 who

Смотрите описание HISTTIMEFORMAT и set -H на man- странице bash(1) для более подробной информации.


Обратите внимание, порядок важен. Вот что происходит с history перед его histexpand:

$ ssh pocampo 'HISTFILE=/tmp/bash_history; HISTTIMEFORMAT=" %F %T ";set -o history -o histexpand; history'
1  ??#45556656
2  ??pwd
3  ??#45677756
4  ??ls
5  ??#45665765
6  ??who

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .