oh-my-zsh 历史日期格式
oh-my-zsh history date formatting
我正在尝试格式化 oh-my-zsh 历史输出。
似乎 fc
是要走的路,因为 history
会忽略 HISTFILE
、HISTSIZE
或 HISTTIMEFORMAT
中的任何设置
有没有办法像我一样格式化它 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
非常感谢任何反馈!
简答:
fc -li | grep $(date -I)
选项 -i
指示 fc
以 ISO 8601 yyyy-mm-dd HH:MM
格式打印时间戳。 -I
选项指示 date 以 ISO 8601 格式输出日期(不带时间)。
关于您遇到的问题:
由于 fc
是 zsh
的内置函数,您可以在 zshbuiltin
manpage.
中找到它的文档
选项 -f
(以美国 MM/DD/YY hh:mm
格式打印时间戳)和 -E
(以欧洲 dd.mm.yyyy hh:mm
格式打印时间戳)是互斥的, -E
优先(静默,没有错误消息)。如果您不想要欧洲格式,请删除 -E
选项。
您可以使用选项 -t fmt
明确指定 fc
的时间戳格式。以下将打印时间戳,如 06/22/2016 - 23:07:09
(注意零填充):
fc -lt '%m/%d/%Y - %H:%M:%S'
这使用 strftime
函数(有关 man 3 strftime
的更多信息)来格式化时间戳。因此格式选项几乎与您可以使用 date
.
的格式选项相同
您可以使用 -
标志告诉 date
不要填充字段。例如 6/22/16
:
date +%-m/%-d/%y
此标志也适用于 fc
。
稍微长一点的答案:
如果您更喜欢 ISO 8601 以外的其他时间戳格式,您可以只指定一个并将其用于 date
和 fc
。例如:未填充的美国日期格式和带秒的 0 填充时钟时间:
TS_DATE="%-m/%-d/%y"
TS_TIME="%H:%M:%S"
fc -lt "$TS_DATE $TS_TIME" | grep $(date +$TS_DATE)
我正在尝试格式化 oh-my-zsh 历史输出。
似乎 fc
是要走的路,因为 history
会忽略 HISTFILE
、HISTSIZE
或 HISTTIMEFORMAT
有没有办法像我一样格式化它 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
非常感谢任何反馈!
简答:
fc -li | grep $(date -I)
选项 -i
指示 fc
以 ISO 8601 yyyy-mm-dd HH:MM
格式打印时间戳。 -I
选项指示 date 以 ISO 8601 格式输出日期(不带时间)。
关于您遇到的问题:
由于
fc
是zsh
的内置函数,您可以在zshbuiltin
manpage. 中找到它的文档
选项
-f
(以美国MM/DD/YY hh:mm
格式打印时间戳)和-E
(以欧洲dd.mm.yyyy hh:mm
格式打印时间戳)是互斥的,-E
优先(静默,没有错误消息)。如果您不想要欧洲格式,请删除-E
选项。您可以使用选项
-t fmt
明确指定fc
的时间戳格式。以下将打印时间戳,如06/22/2016 - 23:07:09
(注意零填充):fc -lt '%m/%d/%Y - %H:%M:%S'
这使用
strftime
函数(有关man 3 strftime
的更多信息)来格式化时间戳。因此格式选项几乎与您可以使用date
. 的格式选项相同
您可以使用
-
标志告诉date
不要填充字段。例如6/22/16
:date +%-m/%-d/%y
此标志也适用于
fc
。
稍微长一点的答案:
如果您更喜欢 ISO 8601 以外的其他时间戳格式,您可以只指定一个并将其用于 date
和 fc
。例如:未填充的美国日期格式和带秒的 0 填充时钟时间:
TS_DATE="%-m/%-d/%y"
TS_TIME="%H:%M:%S"
fc -lt "$TS_DATE $TS_TIME" | grep $(date +$TS_DATE)