教你隱藏Linux的命令行歷史
Linux操作系統(tǒng)默認(rèn)都會保存用戶操作的歷史命令,如果你是 Linux 命令行的用戶,有的時候你可能不希望某些命令記錄在你的命令行歷史中。原因可能很多,例如,你在公司擔(dān)任某個職位,你有一些不希望被其它人濫用的特權(quán)。亦或者有些特別重要的命令,你不希望在你瀏覽歷史列表時誤執(zhí)行。然而,有方法可以控制哪些命令進(jìn)入歷史列表,哪些不進(jìn)入嗎?或者換句話說,我們在 Linux 終端中可以開啟像瀏覽器一樣的無痕模式嗎?答案是肯定的,而且根據(jù)你想要的具體目標(biāo),有很多實(shí)現(xiàn)方法。
在這篇文章中,我們將討論一些行之有效的方法。
注意:文中出現(xiàn)的所有命令都在 Ubuntu 下測試過。
不同的可行方法
前面兩種方法已經(jīng)在之前一篇文章中描述了。如果你已經(jīng)了解,這部分可以略過。然而,如果你不了解,建議仔細(xì)閱讀。
1. 在命令前插入空格
是的,沒看錯。在命令前面插入空格,這條命令會被 shell 忽略,也就意味著它不會出現(xiàn)在歷史記錄中。但是這種方法有個前提,只有在你的環(huán)境變量 HISTCONTROL 設(shè)置為 “ignorespace” 或者 “ignoreboth” 才會起作用。在大多數(shù)情況下,這個是默認(rèn)值。
所以,像下面的命令(LCTT 譯注:這里[space]表示輸入一個空格):
[space]echo “this is a top secret”
如果你之前執(zhí)行過如下設(shè)置環(huán)境變量的命令,那么上述命令不會出現(xiàn)在歷史記錄中。
export HISTCONTROL = ignorespace
下面的截圖是這種方式的一個例子。
第四個 “echo” 命令因?yàn)榍懊嬗锌崭?,它沒有被記錄到歷史中。
2. 禁用當(dāng)前會話的所有歷史記錄
如果你想禁用某個會話所有歷史,你可以在開始命令行工作前簡單地清除環(huán)境變量 HISTSIZE 的值即可。執(zhí)行下面的命令來清除其值:
export HISTSIZE=0
HISTSIZE 表示對于 bash 會話其歷史列表中可以保存命令的個數(shù)(行數(shù))。默認(rèn)情況,它設(shè)置了一個非零值,例如在我的電腦上,它的值為 1000。
所以上面所提到的命令將其值設(shè)置為 0,結(jié)果就是直到你關(guān)閉終端,沒有東西會存儲在歷史記錄中。記住同樣你也不能通過按向上的箭頭按鍵或運(yùn)行 history 命令來看到之前執(zhí)行的命令。
3. 工作結(jié)束后清除整個歷史
這可以看作是前一部分所提方案的另外一種實(shí)現(xiàn)。唯一的區(qū)別是在你完成所有工作之后執(zhí)行這個命令。下面是剛說到的命令:
history -cw
剛才已經(jīng)提到,這個和 HISTSIZE 方法有相同效果。
4. 只針對你的工作關(guān)閉歷史記錄
雖然前面描述的方法(2 和 3)可以實(shí)現(xiàn)目的,它們可以清除整個歷史,在很多情況下,有些可能不是我們所期望的。有時候你可能想保存直到你開始命令行工作之間的歷史記錄。對于這樣的需求,你開始在工作前執(zhí)行下述命令:
[space]set +o history
備注:[space] 表示空格。并且由于空格的緣故,該命令本身也不會被記錄。
上面的命令會臨時禁用歷史功能,這意味著在這命令之后你執(zhí)行的所有操作都不會記錄到歷史中,然而這個命令之前的所有東西都會原樣記錄在歷史列表中。
要重新開啟歷史功能,執(zhí)行下面的命令:
[Space]set -o history
它將環(huán)境恢復(fù)原狀,也就是你完成了你的工作,執(zhí)行上述命令之后的命令都會出現(xiàn)在歷史中。
5. 從歷史記錄中刪除指定的命令
現(xiàn)在假設(shè)歷史記錄中已經(jīng)包含了一些你不希望記錄的命令。這種情況下我們怎么辦?很簡單。直接動手刪除它們。通過下面的命令來刪除:
history | grep “part of command you want to remove”
上面的命令會輸出歷史記錄中匹配的命令,每一條前面會有個數(shù)字。
一旦你找到你想刪除的命令,執(zhí)行下面的命令,從歷史記錄中刪除那個指定的項(xiàng):
history -d [num]
下面是這個例子的截圖。
第二個 ‘echo'命令被成功的刪除了。
(LCTT 譯注:如果你不希望上述命令本身也被記錄進(jìn)歷史中,你可以在上述命令前加個空格)
同樣的,你可以使用向上的箭頭一直往回翻看歷史記錄。當(dāng)你發(fā)現(xiàn)你感興趣的命令出現(xiàn)在終端上時,按下 “Ctrl + U”清除整行,也會從歷史記錄中刪除它。
總結(jié)
以上就是隱藏Linux的命令行歷史的方法總結(jié),有多種不同的方法可以操作 Linux 命令行歷史來滿足你的需求。但是請記住,從歷史中隱藏或者刪除命令通常不是一個好習(xí)慣,盡管本質(zhì)上這并沒有錯。但是你必須知道你在做什么,以及可能產(chǎn)生的后果。所以請使用這些命令的小伙伴們要多多注意!
相關(guān)文章
Linux 自動喚醒和關(guān)閉的實(shí)現(xiàn)方法
這篇文章主要介紹了Linux 自動喚醒和關(guān)閉的實(shí)現(xiàn)方法,需要的朋友可以參考下2018-01-01Ubuntu系統(tǒng)中部署Vagrant和VirtualBox的圖文教程
這篇文章主要介紹了Ubuntu系統(tǒng)中部署Vagrant和VirtualBox的圖文教程,需要的朋友可以參考下2018-04-04設(shè)置一個高容量的Linux POP3服務(wù)器
設(shè)置一個高容量的Linux POP3服務(wù)器...2006-10-10全球頂尖超級計(jì)算機(jī)60%用Linux系統(tǒng)
全球頂尖超級計(jì)算機(jī)60%用Linux系統(tǒng)...2006-10-10mac 系統(tǒng)下使用 chmod 命令修改文件權(quán)限
這篇文章主要介紹了mac 系統(tǒng)下使用 chmod 命令修改文件權(quán)限的相關(guān)資料,需要的朋友可以參考下2017-10-10