網站搜尋

在 Linux 的 Zsh 中啟用歷史命令的時間戳記


在歷史命令輸出中啟用時間戳可以幫助我們找出某個命令在 Linux 中的執行時間。我們已經看到如何在 Bash 歷史中啟用時間戳。今天讓我們看看如何在 Linux 的 Zsh shell 中為history命令啟用時間戳。

在 Zsh Shell 中啟用歷史命令的時間戳記

您可以使用 HISTTIMEFORMAT 環境變數在 Linux 的 Bash 歷史輸出中顯示日期和時間標記。然而,在 Zsh 中您不需要設置任何環境變數。Zsh 默認情況下已經有一些內建標誌可以在 history 命令輸出中顯示日期和時間。

首先,讓我們使用 history 指令查看 zsh 會話中先前執行的命令列表:

% history

範例輸出:

    1  lsb_release -a
    2  uname -r
    3  hostname
    4  ls -l
    5  touch ostechnix.txt
    6  clear

zsh 會話中的 history 命令輸出

如您所見,history 命令不會顯示時間戳記。它只會顯示每個命令的前綴編號。

要為 history 命令啟用時間戳,即在 zsh shell 的所有命令中顯示日期和時間,請在 history 命令中使用 -f 標誌:

% history -f

現在你將在 zsh 殼程式的 history 命令輸出中看到日期和時間:

    1  11/28/2020 17:00  lsb_release -a
    2  11/28/2020 17:00  uname -r
    3  11/28/2020 17:00  hostname
    4  11/28/2020 17:00  ls -l
    5  11/28/2020 17:00  touch ostechnix.txt
    6  11/28/2020 17:00  clear
    7  11/28/2020 17:01  history
在 Zsh Shell 中啟用歷史命令的時間戳記

在這裡,-f 標誌用於以 'US MM/DD/YY hh:mm' 格式打印完整的日期和時間標記

如果你想以 ‘歐洲 dd.mm.yyyy hh:mm’ 格式列印完整的日期時間戳,請使用 -E 參數。

% history -E

範例輸出:

    1  28.11.2020 17:00  lsb_release -a
    2  28.11.2020 17:00  uname -r
    3  28.11.2020 17:00  hostname
    4  28.11.2020 17:00  ls -l
    5  28.11.2020 17:00  touch ostechnix.txt
    6  28.11.2020 17:00  clear
    7  28.11.2020 17:01  history
    8  28.11.2020 17:06  history -f

同樣地,要以 'ISO8601 yyyy-mm-dd hh:mm' 格式列印日期和時間戳,請使用 -i 參數:

% history -i

範例輸出:

    1  2020-11-28 17:00  lsb_release -a
    2  2020-11-28 17:00  uname -r
    3  2020-11-28 17:00  hostname
    4  2020-11-28 17:00  ls -l
    5  2020-11-28 17:00  touch ostechnix.txt
    6  2020-11-28 17:00  clear
    7  2020-11-28 17:01  history
    8  2020-11-28 17:06  history -f
    9  2020-11-28 17:18  history -E

如果你只想列印時間,使用 -d 標誌。

% history -d

範例輸出:

    1  17:00  lsb_release -a
    2  17:00  uname -r
    3  17:00  hostname
    4  17:00  ls -l
    5  17:00  touch ostechnix.txt
    6  17:00  clear
    7  17:01  history
    8  17:06  history -f
    9  17:18  history -E
   10  17:18  history -i

使用 fc 指令在歷史輸出中顯示日期和時間戳記

在 zsh shell 中啟用歷史輸出時間戳的另一種方法是使用 fc 命令。fc 命令,全名為 fix commands,是一個 shell 內建命令,用於列出、編輯並重新執行最近輸入到互動式 shell 的命令。

要在歷史輸出中使用 fc 命令顯示完整時間戳,只需運行:

% fc -lf

範例輸出:

    1  11/28/2020 17:00  lsb_release -a
    2  11/28/2020 17:00  uname -r
    3  11/28/2020 17:00  hostname
    4  11/28/2020 17:00  ls -l
    5  11/28/2020 17:00  touch ostechnix.txt
    6  11/28/2020 17:00  clear
    7  11/28/2020 17:01  history
    8  11/28/2020 17:06  history -f
    9  11/28/2020 17:18  history -E
   10  11/28/2020 17:18  history -i
   11  11/28/2020 17:19  history -d

使用 fc 命令在歷史輸出中顯示日期和時間戳

如前所述,-f 參數會以 美式格式 打印完整的日期時間戳,即 'MM/DD/YY hh:mm'。

如果你想在歷史輸出中以歐洲格式顯示時間戳,格式為dd.mm.yyyy hh:mm,請使用-E參數:

% fc -lE

範例輸出:

    1  28.11.2020 17:00  lsb_release -a
    2  28.11.2020 17:00  uname -r
    3  28.11.2020 17:00  hostname
    4  28.11.2020 17:00  ls -l
    5  28.11.2020 17:00  touch ostechnix.txt
    6  28.11.2020 17:00  clear
    7  28.11.2020 17:01  history
    8  28.11.2020 17:06  history -f
    9  28.11.2020 17:18  history -E
   10  28.11.2020 17:18  history -i
   11  28.11.2020 17:19  history -d
   12  28.11.2020 17:43  fc -lf

要以 ISO8601 格式(即 yyyy-mm-dd hh:mm)顯示時間戳記,使用 -i 標誌:

% fc -li

範例輸出:

    1  2020-11-28 17:00  lsb_release -a
    2  2020-11-28 17:00  uname -r
    3  2020-11-28 17:00  hostname
    4  2020-11-28 17:00  ls -l
    5  2020-11-28 17:00  touch ostechnix.txt
    6  2020-11-28 17:00  clear
    7  2020-11-28 17:01  history
    8  2020-11-28 17:06  history -f
    9  2020-11-28 17:18  history -E
   10  2020-11-28 17:18  history -i
   11  2020-11-28 17:19  history -d
   12  2020-11-28 17:43  fc -lf
   13  2020-11-28 18:01  fc -lE

如果你只想顯示時間,使用 -d 參數:

% fc -ld

範例輸出:

    1  17:00  lsb_release -a
    2  17:00  uname -r
    3  17:00  hostname
    4  17:00  ls -l
    5  17:00  touch ostechnix.txt
    6  17:00  clear
    7  17:01  history
    8  17:06  history -f
    9  17:18  history -E
   10  17:18  history -i
   11  17:19  history -d
   12  17:43  fc -lf
   13  18:01  fc -lE
   14  18:02  fc -li

您也可以從歷史記錄中的特定條目開始,顯示帶有時間戳的歷史輸出。例如,要在 zsh 中列出從第 5個命令開始的歷史輸出並帶有時間戳,請執行:

% fc -li 5

範例輸出:

    5  2020-11-28 17:00  touch ostechnix.txt
    6  2020-11-28 17:00  clear
    7  2020-11-28 17:01  history
    8  2020-11-28 17:06  history -f
    9  2020-11-28 17:18  history -E
   10  2020-11-28 17:18  history -i
   11  2020-11-28 17:19  history -d
   12  2020-11-28 17:43  fc -lf
   13  2020-11-28 18:01  fc -lE
   14  2020-11-28 18:02  fc -li
   15  2020-11-28 18:05  fc -ld

欲瞭解更多詳情,請參考 man 頁面:

% man zsh
% man fc

你正在使用 Fish shell 嗎?請查看以下指南以在 Fish shell 中啟用時間戳記:

  • 在 Fish Shell 中為歷史命令啟用時間戳