2016-06-22 80 views
2

我试图格式化oh-my-zsh历史记录输出。 好像fc是要走的路,因为history忽略HISTFILEHISTSIZEHISTTIMEFORMAToh-my-zsh历史日期格式化

任何设置,有没有办法像我做date

我无法找到任何合适的文档进行格式化关于在线的fc命令。也没有关于fc的手册页。

工作是什么fc -flE输出一种欧洲格式的历史。

最后,我想要做的是找出今天和今天输入的命令数。

这里有一个小问题。

目前我有这种设置:

alias today='date +"%d.%m.%Y"' 没有格式标记,让我删除前导零(我想06年6代替)

但我有更多的格式选项这里比奇怪的zsh历史命令fc。 历史输出时间存在2016年6月22日,和today是2016年6月22日 因此,我不能做到这一点: fc -flE | grep $(today) | wc -l

任何反馈,非常感谢!

回答

4

简短的回答:

fc -li | grep $(date -I) 

选项-i指示fc在ISO打印时间戳8601 yyyy-mm-dd HH:MM格式。 -I选项指示日期以ISO 8601格式(无时间)输出日期。


至于问题你遇到过:

  1. 由于fczsh一个内置的,你可以找到它在zshbuiltin manpage文档。

  2. 选项-f-E(欧洲dd.mm.yyyy hh:mm格式打印时间戳)(打印时间是美国MM/DD/YY hh:mm格式邮票)是互斥的,与-E采取优先次序(悄无声息,没有错误消息)。如果您不想使用欧洲格式,请删除-E选项。

  3. 您可以使用选项-t fmt明确指定fc的时间戳记格式。下面将打印时间戳像06/22/2016 - 23:07:09(注意零填充):

    fc -lt '%m/%d/%Y - %H:%M:%S' 
    

    它使用strftime功能(多与man 3 strftime信息)格式化的时间戳。所以格式选项几乎与date可以使用的选项相同。

  4. 您可以通过使用-标志告诉date不要填充字段。例如6/22/16

    date +%-m/%-d/%y 
    

    该标志也适用于fc


稍长的答案:

如果你喜欢比ISO 8601的一些其它时间标记格式,你可以指定一个两个datefc的使用它。例如:非填充的美国日期格式和带有秒的0填充时钟时间:

TS_DATE="%-m/%-d/%y" 
TS_TIME="%H:%M:%S" 
fc -lt "$TS_DATE $TS_TIME" | grep $(date +$TS_DATE) 
+0

非常感谢!真的很难找到关于这个命令的信息。 感谢您的时间和精力。我真的很感激它:) –

+0

我一直在使用oh-my-zsh几年,现在我需要获得最新的[.zshrc模板](https://raw.githubusercontent.com/robbyrussell/ohmy -zsh/master/templates/zshrc.zsh-template)来获得'HIST_STAMPS'选项。也许其他人会有同样的问题。 – the0ther