历史列表没有时间戳并且结果独特
使用bash,我用时间戳保存我的历史记录。
如何打印省略时间戳的历史记录?
alias h=history alias g=grep -i
要查找我用于heroku的行,我输入:
> h | g heroku
我想自然地在没有时间戳的情况下使结果独一无二。
这个问题有些相关: 如何避免.bash_history中的重复条目
但是,有时我想查看历史记录中的副本以查看运行命令的上下文。
简单地说, history | sed 's/.[ ]*.[0-9]*.[ ]*//' | uniq | grep -i "heroku"
history | sed 's/.[ ]*.[0-9]*.[ ]*//' | uniq | grep -i "heroku"
sed
将删除每行开头的任何[spaces] [数字] [空格]
为了优化而做到了
history | grep -i "heroku" | sed 's/.[ ]*.[0-9]*.[ ]*//' | uniq
除了回答@ devav2
清除/取消历史时间戳环境变量
HISTTIMEFORMAT="";
导出以下命令,
export HISTCONTROL=ignoredups
– >这将忽略按顺序执行的重复项
可以基于每个命令抑制(或修改)时间戳:
如果HISTTIMEFORMAT变量已设置且不为null,则其值将用作strftime(3)的格式字符串,以打印与每个显示的历史记录条目关联的时间戳。 否则不打印时间戳。
只留下行号,这些行号无法抑制,但填充到固定宽度 (行号<100,000):
printf("%5d%c %s%s\n", line_number, modified ? '*' : ' ', timestamp, line);
因此,要从每一行中删除前缀,我们需要剪切前7个字符(5个数字,1个标记字符和1个空格),例如:
$ HISTTIMEFORMAT= history 10 | cut -c8-
这可以很容易地添加到别名:
$ alias h='HISTTIMEFORMAT= history | cut -c8-'
然后用例如:
$ h | grep whatever $ h | head -n 10