如何在linux上使用history命令

Linux的shell儲存了您執行的命令的歷史記錄,您可以搜尋它來重複您過去執行的命令。一旦您瞭解了Linux history命令以及如何使用它,它就可以顯著地提高您的生產效率。...

Linux的shell儲存了您執行的命令的歷史記錄,您可以搜尋它來重複您過去執行的命令。一旦您瞭解了Linux history命令以及如何使用它,它就可以顯著地提高您的生產效率。

操縱歷史

正如喬治桑塔亞納(georgestantayana)的一句名言:“那些記不住過去的人註定要重蹈覆轍。”不幸的是,在Linux上,如果你記不住過去,你就不能重蹈覆轍,即使你想重蹈覆轍。

這時Linux的history命令就派上用場了。它允許你回顧和重複你以前的命令。這不僅僅是為了鼓勵懶惰或節省時間,還有一個效率(和準確性)因素在起作用。命令越長、越複雜,就越難記住和鍵入而不出錯。有兩種型別的錯誤:一種是阻止命令工作,另一種是允許命令工作,但使其執行意外操作。

history命令消除了這些問題。像大多數Linux命令一樣,它的內容比你想象的要多。但是,如果您學習如何使用history命令,它可以每天改進您對Linux命令列的使用。這是對你時間的一次很好的投資。使用history命令有比反覆按向上箭頭更好的方法。

歷史記錄命令

在最簡單的形式中,只需鍵入其名稱即可使用history命令:

history

如何在linux上使用history命令

然後,以前使用的命令列表被寫入終端視窗。

如何在linux上使用history命令

命令被編號,最近使用的命令(編號最高的命令)位於列表的末尾。

要檢視一定數量的命令,可以在命令列上將一個數字傳遞給歷史記錄。例如,要檢視最近使用的10個命令,請鍵入以下命令:

history 10

如何在linux上使用history命令

如果透過tail命令對歷史進行管道處理,則可以獲得相同的結果。為此,請鍵入以下內容:

history | tail -n 10

如何在linux上使用history命令

相關:如何在Linux上使用管道

重複命令

如果要重用“歷史記錄”列表中的命令,請鍵入感嘆號(!),以及中間沒有空格的命令的編號。

例如,要重複37號命令,請鍵入以下命令:

!37

如何在linux上使用history命令

要重複上一個命令,請再次鍵入兩個感嘆號,不帶空格:

!!

如何在linux上使用history命令

當您發出命令而忘記使用sudo時,這會很有用。鍵入sudo,一個空格,雙感嘆號,然後按回車鍵。

對於下面的示例,我們鍵入了一個需要sudo的命令。我們不需要重新輸入整行程式碼,只需輸入sudo,就可以省去大量的按鍵操作!!,如下圖:

mv ./my_script.sh /usr/local/bin/ sudo !!

如何在linux上使用history命令

因此,您可以從列表中鍵入相應的數字來重複一個命令,或使用雙感嘆號來重複上一個命令。但是,如果你想重複第五或第八個命令呢?

可以使用一個感嘆號、一個連字元(-)和前面任何命令的編號(同樣,不帶空格)來重複該命令。

要重複上一個命令,請鍵入以下命令:

!-13

如何在linux上使用history命令

按字串搜尋命令

要重複以特定字串開頭的最後一個命令,可以鍵入感嘆號,然後鍵入不帶空格的字串,然後按Enter鍵。

例如,要重複以sudo開頭的最後一個命令,請鍵入以下命令:

!sudo

如何在linux上使用history命令

不過,這裡面有危險因素。如果以sudo開頭的最後一個命令不是您認為的命令,那麼您將啟動錯誤的命令。

不過,要提供安全網,可以使用:p(print)修飾符,如下所示:

!sudo:p

如何在linux上使用history命令

這指示history將命令列印到終端視窗,而不是執行它。這允許您在使用命令之前檢視它。如果是所需的命令,請按向上箭頭,然後按Enter鍵使用它。

如果要查詢包含特定字串的命令,可以使用感嘆號和問號。

例如,要查詢並執行包含單詞“aliases”的第一個匹配命令,可以鍵入以下命令:

!?aliases

如何在linux上使用history命令

這將找到任何包含字串“aliases”的命令,而不管它出現在字串中的什麼位置。

互動式搜尋

互動式搜尋允許您跳過匹配命令的列表並重復所需的命令。

只需按Ctrl+r開始搜尋。

如何在linux上使用history命令

鍵入搜尋線索時,將出現第一個匹配的命令。您鍵入的字母出現在背勾(`)和撇號(')之間。匹配的命令會隨著您鍵入每個字母而更新。

如何在linux上使用history命令

每次按Ctrl+r時,您都會向後搜尋下一個匹配的命令,該命令將顯示在“終端”視窗中。

如何在linux上使用history命令

按Enter鍵時,將執行顯示的命令。

如何在linux上使用history命令

要在執行命令之前對其進行編輯,請按向左或向右箭頭鍵。

如何在linux上使用history命令

命令將顯示在命令列中,您可以對其進行編輯。

如何在linux上使用history命令

您可以使用其他Linux工具來搜尋歷史記錄列表。例如,要將歷史記錄的輸出匯入grep並搜尋包含字串“aliases”的命令,可以使用以下命令:

history | grep aliases

如何在linux上使用history命令

修改最後一個命令

如果您需要修復一個輸入錯誤,然後重複該命令,您可以使用**符號(^)來修改它。這是一個很好的技巧,當你拼寫錯誤的命令或想重新執行一個不同的命令列選項或引數。

要使用它,請鍵入(不帶空格)**符號、要替換的文字、另一個**符號、要替換的文字和另一個**符號,然後按Enter鍵。

***

sudo systemctl start shhd

您可以透過鍵入以下內容輕鬆更正此問題:

^shhd^sshd^

如何在linux上使用history命令

***

從歷史記錄列表中刪除命令

也可以使用-d(delete)選項從歷史記錄列表中刪除命令。沒有理由將拼寫錯誤的命令保留在歷史記錄列表中。

您可以使用grep找到它,透過-d選項將其編號傳遞給歷史記錄以刪除它,然後再次搜尋以確保它已消失:

history | grep shhd history -d 83 history | grep shhd

如何在linux上使用history命令

您還可以將一系列命令傳遞給-d選項。要刪除從22到32(含)的所有列表條目,請鍵入以下命令:

history -d 22 32

要僅刪除最後五個命令,可以鍵入負數,如下所示:

history -d -5

手動更新歷史檔案

當您登入或開啟終端會話時,歷史記錄列表將從歷史記錄檔案中讀取。在Bash中,預設的歷史檔案是.Bash\u history。

在當前終端視窗會話中所做的任何更改僅在關閉終端視窗或登出時寫入歷史檔案。

假設要開啟另一個終端視窗以訪問完整的歷史記錄列表,包括在第一個終端視窗中鍵入的命令。-a(all)選項允許您在開啟第二個終端視窗之前在第一個終端視窗中執行此操作。

要使用它,請鍵入以下內容:

history -a

如何在linux上使用history命令

命令以靜默方式寫入歷史檔案。

如果要將對歷史記錄列表的所有更改寫入歷史記錄檔案(例如,如果刪除了一些舊命令),可以使用-w(write)選項,如下所示:

history -w

如何在linux上使用history命令

清除歷史記錄列表

要從歷史記錄列表中清除所有命令,可以使用-c(清除)選項,如下所示:

history -c

如何在linux上使用history命令

如果還要強制對歷史檔案進行這些更改,請使用-w選項,如下所示:

history -w

安全和歷史檔案

如果您使用的任何應用程式要求您在命令列中鍵入敏感資訊(如密碼),請記住這也將儲存在歷史檔案中。如果不想儲存某些資訊,可以使用以下命令結構立即將其從歷史記錄列表中刪除:

special-app my-secret-password;history -d $(history 1) history 5

如何在linux上使用history命令

此結構包括兩個用分號(;)分隔的命令。我們來分解一下:

  • 特殊應用程式:我們正在使用的程式的名稱。
  • 我的祕密密碼:我們需要在命令列上為應用程式提供的祕密密碼。一號命令到此結束。
  • history-d:在命令2中,我們呼叫history的-d(delete)選項。我們要刪除的是命令的下一部分。
  • $(歷史記錄1):這使用命令替換。$()中包含的命令部分在子shell中執行。執行的結果在原始命令中作為文字釋出。history 1命令返回上一個命令。因此,您可以將第二個命令看作歷史-d“這裡的最後一個命令”

您可以使用history 5命令來確保包含密碼的命令已從歷史記錄列表中刪除。

不過,還有一個更簡單的方法。因為Bash會忽略預設情況下以空格開頭的行,所以只需在行的開頭包含空格,如下所示:

special-app another-password history 5

如何在linux上使用history命令

帶有密碼的命令未新增到歷史記錄列表中。此技巧有效的原因包含在.bashrc檔案中。

.bashrc檔案

每次登入或開啟終端視窗時,都會執行.bashrc檔案。它還包含一些控制history命令列為的值。讓我們用gedit編輯這個檔案。

鍵入以下內容:

gedit .bashrc

如何在linux上使用history命令

在檔案頂部附近,可以看到兩個條目:

  • HISTSIZE:歷史記錄列表可以包含的最大條目數。
  • HISTFILESIZE:歷史檔案可以包含的行數限制。

如何在linux上使用history命令

這兩種價值觀以以下方式相互作用:

  • 登入或啟動終端視窗會話時,將從.bash\u歷史檔案填充歷史列表。
  • 關閉終端視窗時,在HISTSIZE中設定的最大命令數將儲存到.bash\u歷史檔案中。
  • 如果啟用了histappend shell選項,則命令將附加到.bash\u歷史記錄中。如果未設定histappend,則會覆蓋.bash\u歷史。
  • 將歷史記錄列表中的命令儲存到.bash\u history後,歷史記錄檔案將被截斷,以包含不超過HISTFILESIZE的行。

同樣在檔案頂部附近,您會看到一個HISTCONTROL值的條目。

如何在linux上使用history命令

可以將此值設定為執行以下任一操作:

  • 點火空間:線從沒有新增到歷史記錄列表的空格開始。
  • 我gnoredups:重複命令未新增到歷史檔案。
  • 我gnoreboth:啟用兩者上面提到的。

也可以列出不希望新增到歷史記錄列表中的特定命令。用冒號(:)將它們分開,並用引號(“…”)括起來。

您可以按照此結構向.bashrc檔案中新增一行,並替換要忽略的命令:

export HISTIGNORE="ls:history"

如何在linux上使用history命令

使用時間戳

如果要向歷史記錄列表新增時間戳,可以使用HISTIMEFORMAT設定。為此,只需在.bashrc檔案中新增一行,如下所示:

export HISTTIMEFORMAT="%c "

請注意,右引號前有一個空格。這可以防止時間戳與命令列表中的命令對接。

如何在linux上使用history命令

現在,當您執行history命令時,您將看到日期和時間戳。請注意,在新增時間戳之前,歷史記錄列表中的任何命令都將使用接收時間戳的第一個命令的日期和時間進行時間戳。在下面的示例中,這是命令118。

如何在linux上使用history命令

那是一個冗長的時間戳。但是,您可以使用%c以外的標記來細化它。您可以使用的其他令牌包括:

  • %d:白天
  • %m:月
  • %y:年
  • %H:小時
  • %M:分鐘
  • %S:秒
  • %F:完整日期(年月日格式)
  • %T:時間(小時:分鐘:秒(格式)
  • %c:完整的日期和時間戳(日-日-月-年,以及小時:分鐘:秒(格式)

讓我們嘗試並使用幾個不同的標記:

export HISTTIMEFORMAT="%d n%m %T "

如何在linux上使用history命令

輸出使用日、月和時間。

如何在linux上使用history命令

如果我們去掉日和月,它只會顯示時間。

對HISTIMEFORMAT所做的任何更改都將應用於整個歷史記錄列表。這是可能的,因為每個命令的時間儲存為Unix epoch的秒數。HISTTIMEFORMATdirective僅指定用於將該秒數呈現為可讀樣式的格式,例如:

export HISTTIMEFORMAT="%T "

如何在linux上使用history命令

我們的產量現在更容易控制了。

如何在linux上使用history命令

也可以使用history命令進行稽核。有時,檢視過去使用過的命令可以幫助您確定可能導致問題的原因。

就像在生活中一樣,在Linux上,您可以使用history命令來重溫美好時光,並從中吸取教訓。

相關:您應該知道的37條重要的Linux命令

  • 發表於 2021-04-02 18:17
  • 閱讀 ( 49 )
  • 分類:網際網路

你可能感興趣的文章

使用以下技巧和技巧成為linux命令列高手

對於Linux使用者來說,命令列本質上是一個非常強大的工具。雖然更為使用者友好的Linux作業系統(OS)提供了大量功能,而不需要進入終端,但它是作業系統的一個必要元素。與流行的觀點相反,命令列甚至可以簡化某些操作。...

  • 發佈於 2021-03-12 10:19
  • 閲讀 ( 44 )

40多個最常用的linux終端命令

Linux命令列有兩件事是正確的:第一,在任何給定的時間都可以使用成千上萬個可能的命令;第二,最終只能使用其中的一小部分。儘管提供了力量,我們大多數人只是重複同樣的命令一遍又一遍。 ...

  • 發佈於 2021-03-15 21:40
  • 閲讀 ( 49 )

如何在linux上安裝和使用powershell

... 在本文中,我將向您展示如何在Linux上安裝、執行和使用PowerShell! ...

  • 發佈於 2021-03-16 02:34
  • 閲讀 ( 50 )

如何找出谷歌是否一直在聽你說話

在整個2016年,越來越明顯的是,我們的智慧**一直表現不端。惡意軟體已經夠糟糕的了,裝置晶片組的問題可以修補,你應該為你的裝置設定一個PIN碼以防萬一。 ...

  • 發佈於 2021-03-17 08:53
  • 閲讀 ( 46 )

如何在windows10上獲得linux bash shell

想要在Windows PC上快速方便地訪問Linux嗎?最好的選擇是使用Windows子系統for Linux。 ...

  • 發佈於 2021-03-21 11:48
  • 閲讀 ( 58 )

如何在linux中新增使用者

想在Linux系統上新增使用者但不知道如何新增?在Linux上使用命令列介面管理使用者無疑是一項複雜的工作。而對於初學者來說,即使新增新使用者也是一場噩夢。 ...

  • 發佈於 2021-03-26 23:29
  • 閲讀 ( 64 )

如何使用shopt定製bashshell

如果您使用shopt微調bashshell的行為,您可以控制超過50個設定。我們將向您展示如何按照您喜歡的方式定製您的Linux系統。 shopt內建 shopt內建是bashshell所有版本的一部分,因此不需要安裝任何東西。多年來,shopt提供的選項數量...

  • 發佈於 2021-04-01 12:30
  • 閲讀 ( 54 )

如何使用linux的man命令:隱藏的祕密和基礎知識

你需要知道的關於Linux的一切都在它的手冊頁中。例如,您可以搜尋一個命令來完成一個任務,即使您不知道它叫什麼。但是你怎麼能找到手冊頁呢?這裡有一些技巧。 linux的內建手冊 有一個古老的(來自Unix黃金時代)Linux笑...

  • 發佈於 2021-04-02 10:46
  • 閲讀 ( 54 )

linux下如何使用which命令

Linux which命令標識在向shell發出命令時啟動的可執行二進位制檔案。如果您的計算機上有同一程式的不同版本,您可以使用哪個來確定shell將使用哪個版本。 二進位制檔案和路徑 當您試圖從終端視窗執行程式或命令時,shell(通...

  • 發佈於 2021-04-02 20:07
  • 閲讀 ( 47 )

如何在linux上建立別名和shell函式

使用別名和bashshell函式建立自己的Linux命令。馴服重複性的任務,截斷冗長的程序,並用您經常使用且難以記住的選項配置標準命令。 別名和shell指令碼是Linux和類Unix作業系統中的強大技術,允許您將命令列體驗磨練為您想要的...

  • 發佈於 2021-04-03 03:45
  • 閲讀 ( 45 )
益貝兒
益貝兒

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦