【问题标题】:oh-my-zsh history date formattingoh-my-zsh 历史日期格式
【发布时间】:2016-10-24 14:47:05
【问题描述】:

我正在尝试格式化 oh-my-zsh 历史输出。 似乎fc 是要走的路,因为history 会忽略HISTFILEHISTSIZEHISTTIMEFORMAT 中的任何设置

有没有办法像我使用 date 那样格式化它

我在网上找不到任何有关fc 命令的适当文档。也没有关于 fc 的手册页。

起作用的是fc -flE以一种欧洲格式输出历史记录。

最后,我想做的是找出我今天输入了多少命令以及何时输入。

这里有点问题。

目前我有这个设置:

alias today='date +"%d.%m.%Y"' 没有格式标记可以让我删除前导零(我想要 6 而不是 06)

但我在这里有更多的格式选项,而不是奇怪的 zsh 历史命令 fc。 历史输出日期为 22.6.2016,today 为 22.06.2016 因此,我不能这样做: fc -flE | grep $(today) | wc -l

非常感谢任何反馈!

【问题讨论】:

    标签: linux zsh oh-my-zsh


    【解决方案1】:

    简答:

    fc -li | grep $(date -I)
    

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


    至于你遇到的问题:

    1. 由于fczsh 的内置函数,您可以在zshbuiltin manpage 中找到它的文档。

    2. 选项-f(以美国MM/DD/YY hh:mm格式打印时间戳)和-E(以欧洲dd.mm.yyyy 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)
    

    【讨论】:

    • 非常感谢!很难找到有关此命令的信息。感谢您的时间和精力。我真的很感激:)
    • 我已经使用 oh-my-zsh 几年了,我需要获取最新的 .zshrc template 才能获得 HIST_STAMPS 选项。也许其他人也会有同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2019-03-16
    • 2011-10-11
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多