1

我最近在我的 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,它什么也没做。我必须做什么才能让它识别换行符?

任何指针将不胜感激。

4

2 回答 2

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
于 2013-10-30T11:45:05.003 回答
0

根据您的环境,您可能需要使用引号或附加反斜杠进行转义。

\\n   or "\n"
于 2013-10-05T02:26:22.023 回答