2017-07-15 117 views
2

我想在每次運行bash命令後打印日期。在bash中的每個命令之後執行命令

這可以幫助我瞭解多少命令了,當我從鍵盤遠離執行

我知道我可以做

`DATE=`date +%d/%m/%Y\ %H:%M:%S` && echo $DATE` 

得到的日期,但我不知道如何或即使在bash上執行的每個命令之後都可以運行此命令。

我也有興趣在運行相同的命令每一個命令之前這樣我就可以知道有多長的命令了。

有沒有可能?

我應該編輯哪個文件?

例如:

$ wget google.com 
15/07/2017 23:40:05 

我會很高興,如果我也可以介紹一下這款以下feauture:

$ wget google.com 
15/07/2017 23:40:05 15/07/2017 23:40:11 
Program run for 00:00:06 

在第一次約會時,我跑的程序,二是當程序終止第三個是自我解釋。

正如你明白,我不想鍵入每次

$ wget google.com && `DATE=`date +%d/%m/%Y\ %H:%M:%S` && echo $DATE` 

感謝

+0

也許這可能會幫助你[https://unix.stackexchange.com/q/12059](https://unix.stackexchange。 com/q/12059) – Jibbow

+0

你也可以在你的'PS1'提示符中包含日期,以便在每個命令運行之前和之後總是在你的前面。你可以使用'\ D {format}'格式傳遞給'strftime(3)'。非常方便。還有許多時間格式。 –

回答

4

之前的每一個命令進入,設置DEBUG陷阱執行CMD。例如。

trap date DEBUG 

要發出一個提示,設置PROMPT_COMMAND前執行該命令:

PROMPT_COMMAND=date 
+0

這很酷,但陷阱看起來在命令執行之前運行。 – Ereli

+0

正是我想要的。我怎樣才能使PROMPT_COMMAND =日期執行每次我打開終端爲默認?因爲你的解決方案有效,但是我只有在打開終端時才能輸入它......如何消除......一次:)我很懶!感謝您將 – f126ck

+0

@ f126ck放入您的** .bashrc **文件。 –

0

要打印時間戳之後的每一個命令只需要修改你的PS1提示,並添加日期到它。唯一的問題在於,它會告訴你何時結束命令並顯示新提示。因此,如果您長時間打開提示,只需在運行命令之前按Enter即可捕獲開始時間。

PS1="\D{%F %T} \$ " 

看到這個arch wiki page或只是谷歌bash提示自定義。

要增加花費在執行程序時,只需在命令前加上時間

$ time wget google.com 

它會給你輸出這樣

real 0m0.177s 
user 0m0.156s 
sys 0m0.020s 

,你可以得到更多的偷懶和要不要命令每次運行它時都覺得自己打字時間,只需創建別名。

alias wget="time wget" 

因爲在其他命令之前運行bash別名,所以即使它看起來像遞歸,也可以這樣做。然後你會像以前那樣稱呼它。
當然,別名和提示設置可以放在.bashrc文件中,所以每次打開終端時都不必輸入它們。

3

這正是這麼做的:

PROMPT_COMMAND+=$'\n'"date +%d/%m/%Y\ %H:%M:%S" 

在PROMPT_COMMAND的字符串獲取每個命令後評估。您只需要將日期命令添加到您已有的任何內容中即可。 ($'\n'(新行)是一個有些更強大的木匠比;爲連續兩次;會給你一個語法錯誤)

2

您可以日期/時間添加到您的提示下,通過PS1變量。您可以使用date命令,但使用supported special characters(例如\d日期)或\D{strftime-fmt}更有效。

例如:

PS1='\[email protected]\h[\D{%F} \D{%T}]\w\$ ' 

,或者顏色:

PS1='\[\033[01;32m\]\[email protected]\h\[\033[00m\][\[\033[02;33m\]\D{%F}\[\033[08m\]T\[\033[00m\]\[\033[02;33m\]\D{%T}\[\033[00m\]]\[\033[01;34m\]\w\[\033[00m\]\$ ' 

將顯示:

[email protected][2017-07-16 00:01:17]~/somedir$ 

注意,在第二種情況下(彩色),我們有一個有效的ISO8601時間戳,在中間有一個「隱藏」日期/時間分隔符T。如果您使用鼠標選擇它,則T可見並且可以複製。 (也雙擊將選擇完整的時間戳,不僅日期或時間。)