Bash

HISTTIMEFORMAT 更改根本不起作用

  • April 28, 2021

我正在嘗試為歷史命令添加時間戳

export HISTTIMEFORMAT='%F %T '

,但歷史記錄中的命令(新舊)沒有顯示時間戳。

的輸出

history | tail
 445  exoirt HISTTIMEFORMAT='F% T%'
 446  export HISTTIMEFORMAT='F% T%'
 447  history
 448  history | tail
 449  ls
 450  cd
 451  ls
 452  cd
 453  ls
 454  cd

我希望數字和列之間有一些日期時間資訊。 像這裡(在下面也可以看到)

      1  2008-08-05 19:02:39 service network restart
      2  2008-08-05 19:02:39 exit
      3  2008-08-05 19:02:39 id
      4  2008-08-05 19:02:39 cat /etc/redhat-release

的輸出

type history

history is an alias for history 0

我試圖在 ~/.bashrc 文件中插入變數,但它再次不起作用。

編輯: 我正在執行 Kali linux。我嘗試重新啟動系統並重置我的歷史記錄大小和數據。 編輯#2: 輸出

echo $ZSH_VERSION 
5.8

的輸出

echo $SHELL
/usr/bin/zsh

你在 Kali Linux 上。Kali Linux 發行版使用zsh其預設登錄 shell,而不是bash.

這意味著您所做的任何更改~/.bashrc都不會被您使用的 shell 看到。zshshell 使用該文件~/.zshrc來初始化互動式 shell 會話。

此外,zshshell 沒有呼叫 shell 變數HISTTIMEFORMAT來做任何特別的事情。(順便說一句,如果您一直使用bash,則不必使用export此變數。)相反,您將不得不使用history內置命令以不同的方式查看歷史記錄。

但是,首先您必須讓 shell 以擴展格式儲存歷史資訊,其中包括時間戳。你這樣做

setopt EXTENDED_HISTORY

~/.zshrc如果您希望在您啟動的所有 shell 會話中執行此操作)。該 shell 選項記錄在zshoptions手冊中。

然後,您將不得不擺脫Kali Linux 上history預設~/.zshrc設置的相當無用的別名,因為它會阻止我們history正確使用該命令。

要麼註釋掉這一行

alias history="history 0"

或添加

unalias history

在文件的末尾。

然後,您應該能夠使用

history -i

另請參閱手冊中的fc(history實際上與fc -l)的文件,zshbuiltins了解如何將輸出history格式化為您想要的格式。例如

history -t '%F %T'

(這恰好與 from 的輸出格式幾乎完全相同history -i,但增加了秒數。)

引用自:https://unix.stackexchange.com/questions/647001