如果你是 Linux 命令行的用戶,有的時(shí)候你可能不希望某些命令記錄在你的命令行歷史中。原因可能很多,例如,你在公司擔(dān)任某個(gè)職位,你有一些不希望被其它人濫用的特權(quán)。亦或者有些特別重要的命令,你不希望在你瀏覽歷史列表時(shí)誤執(zhí)行。
然而,有方法可以控制哪些命令進(jìn)入歷史列表,哪些不進(jìn)入嗎?或者換句話說,我們在 Linux 終端中可以開啟像瀏覽器一樣的無痕模式嗎?答案是肯定的,而且根據(jù)你想要的具體目標(biāo),有很多實(shí)現(xiàn)方法。在這篇文章中,我們將討論一些行之有效的方法。
注意:文中出現(xiàn)的所有命令都在 Ubuntu 下測試過。
不同的可行方法
前面兩種方法已經(jīng)在之前一篇文章中描述了。如果你已經(jīng)了解,這部分可以略過。然而,如果你不了解,建議仔細(xì)閱讀。
1. 在命令前插入空格
是的,沒看錯(cuò)。在命令前面插入空格,這條命令會(huì)被 shell 忽略,也就意味著它不會(huì)出現(xiàn)在歷史記錄中。但是這種方法有個(gè)前提,只有在你的環(huán)境變量 HISTCONTROL 設(shè)置為 "ignorespace" 或者 "ignoreboth" 才會(huì)起作用。在大多數(shù)情況下,這個(gè)是默認(rèn)值。
所以,像下面的命令(這里 [space] 表示輸入一個(gè)空格):
[space]echo "this is a top secret"
如果你之前執(zhí)行過如下設(shè)置環(huán)境變量的命令linux命令,那么上述命令不會(huì)出現(xiàn)在歷史記錄中。
export HISTCONTROL = ignorespace
下面的截圖是這種方式的一個(gè)例子。
第四個(gè) "echo" 命令因?yàn)榍懊嬗锌崭瘢鼪]有被記錄到歷史中。
2. 禁用當(dāng)前會(huì)話的所有歷史記錄
如果你想禁用某個(gè)會(huì)話所有歷史,你可以在開始命令行工作前簡單地清除環(huán)境變量 HISTSIZE 的值即可。執(zhí)行下面的命令來清除其值:
export HISTSIZE=0
HISTSIZE 表示對(duì)于 bash 會(huì)話其歷史列表中可以保存命令的個(gè)數(shù)(行數(shù))。默認(rèn)情況,它設(shè)置了一個(gè)非零值,例如在我的電腦上,它的值為 1000。
現(xiàn)在,他已經(jīng)不再懷念home按鍵,能輕松自如地向上劃動(dòng)屏幕關(guān)閉應(yīng)用,或向上滑動(dòng)屏幕然后暫停,調(diào)用多任務(wù)界面。運(yùn)行nohup命令后,按任意鍵返回shell 窗口,然后輸入exit退出終端,不能直接關(guān)閉窗口,直接關(guān)閉窗口的話,還是會(huì)造成命令進(jìn)程和終端一起結(jié)束?崤扇7295此次采用了虛擬按鍵的設(shè)計(jì),按鍵整合在屏幕底部一個(gè)固定區(qū)域顯示,按鍵的最左側(cè)有一個(gè)向下的箭頭,用戶可以隨時(shí)將按鍵隱藏,要呼出按鍵則是在屏幕下方做一個(gè)向上滑動(dòng)的手勢操作就行了,在玩游戲或者看圖片的時(shí)候可以輕松隱藏虛擬按鍵來獲得全屏的顯示效果。
3. 工作結(jié)束后清除整個(gè)歷史
這可以看作是前一部分所提方案的另外一種實(shí)現(xiàn)。唯一的區(qū)別是在你完成所有工作之后執(zhí)行這個(gè)命令。下面是剛說到的命令:
history -cw
剛才已經(jīng)提到,這個(gè)和 HISTSIZE 方法有相同效果。
4. 只針對(duì)你的工作關(guān)閉歷史記錄
雖然前面描述的方法(2 和 3)可以實(shí)現(xiàn)目的,它們可以清除整個(gè)歷史,在很多情況下,有些可能不是我們所期望的。有時(shí)候你可能想保存直到你開始命令行工作之間的歷史記錄。對(duì)于這樣的需求,你開始在工作前執(zhí)行下述命令:
[space]set +o history
備注:[space] 表示空格。并且由于空格的緣故,該命令本身也不會(huì)被記錄。
上面的命令會(huì)臨時(shí)禁用歷史功能,這意味著在這命令之后你執(zhí)行的所有操作都不會(huì)記錄到歷史中,然而這個(gè)命令之前的所有東西都會(huì)原樣記錄在歷史列表中。
要重新開啟歷史功能,執(zhí)行下面的命令:
[Space]set -o history