2016-06-22 114 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