我最近在bash历史记录中打开了时间戳。我正在使用三个选项来更好地了解我的历史。
HISTTIMEFORMAT="[%F %T %Z] "; shopt -s histappend; PROMPT_COMMAND='history -a'
我拼凑了一个bash脚本,而不是每当我想查看历史而不必大脑解析时代时,就将HISTSIZE设置为一个非常大的数字。
awk '/^#[0-9]+$/{ match($0,/[0-9]+/);
t = strftime("[%F %T %Z] ",substr($0,RSTART,RLENGTH));
sub(/#[0-9]+/,t) } 1' ~/.bash_history | less
这很难看,但它确实有效。我想它也可以简化,但这仅仅是我发布这个的原因。我想要做的是在每个命令前加上对应的时间戳。我认为这可以在sub(/#[0-9]+/,t)
中完成,但是当我尝试匹配\n
时,它什么都不做。我该怎么做让它识别新线?
任何指针都将非常感激。
答案 0 :(得分:0)
根据您的环境,您可能需要使用引号或额外的反斜杠进行转义。
\\n or "\n"
答案 1 :(得分:0)
记录分隔符\n
不是记录$0
的一部分。
您可以稍微修改您的脚本,以便它不会输出\n
:
awk '/^#[0-9]+$/{ match($0,/[0-9]+/);
t = strftime("[%F %T %Z] ",substr($0,RSTART,RLENGTH));
sub(/#[0-9]+/,t); printf $0; next } 1' ~/.bash_history | less