файл истории с сохраненной меткой времени

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

Эти каталоги намеренно недоступны для записи обычным пользователям. Если вам нужно внести в них изменения вручную (что бывает редко), вы можете выполнить эти операции как root через sudo .

2
01.04.2016, 23:29
1 ответ

Вы можете сделать что-нибудь вроде

perl -Mposix -pe 's/^#([0-9]{10})/POSIX::strftime( "%d\/%m\/%y %T", gmtime($1))/eg' .bash_history > readable_history

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

Edit: Вот строчка, чтобы сделать это на месте, не испортив файл истории:

perl -Mposix -i -pe 's/^#([0-9]{10})(.*)/"# ".POSIX::strftime( "%d\/%m\/%y %T", gmtime($1))."\n#$1$2"/ge' .bash_history

Это создаст файл, который будет выглядеть так:

#1356431101 command arg arg
#1356531101 command2 arg2

Выглядит так:

# 25/12/12 10:25:01
#1356431101 command arg arg
# 26/12/12 14:11:41
#1356531101 command2 arg2

Edit2: Помещение этого в мой bashrc помогло мне:

format_history () {
    perl -i -e '$/=undef;my $string=<>;$string=~s/#([0-9]{10}.*\n.*$)/"# ".localtime($1)."#\n#$1"/ge;print $string;' ~/.bash_history
}
export HISTTIMEFORMAT="%d/%m/%y %T "
shopt -s histappend
PROMPT_COMMAND="history -a;format_history;$PROMPT_COMMAND"

Окончательное редактирование - вот лучшая версия регулярного выражения, которая не должна ничего дублировать:

perl -i -e '$/=undef;my $string=<>;$string=~s/(#\s[^\n]*\n)?#(\d{10}\n)/"# ".localtime($+)."\n#$+"/ge;print $string;' your_history_file_name_here
3
29.04.2021, 00:16

Теги

Похожие вопросы