自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

揭開Linux命令Bash history的神秘面紗

系統(tǒng) Linux
本文將揭開Bash history的神秘面紗,使之成為一個(gè)更友好的系統(tǒng)管理工具。

 您可能知道如何使用上下箭頭鍵滾動(dòng)瀏覽Bash歷史記錄,但是你是否知道Bash history不僅僅是重復(fù)命令,而且還有很多其他的功能,或者還有更多?history命令是一個(gè)晦澀難懂的命令,但至少它是強(qiáng)大且方便的。本文將揭開Bash history的神秘面紗,使之成為一個(gè)更友好的系統(tǒng)管理工具。

背景

在Bash中,命令歷史記錄存儲(chǔ)在主目錄的(.bash_history)文件中。前綴點(diǎn)(.)表示該文件是隱藏文件。要查看它,請(qǐng)發(fā)出ls-a命令。 

  1. linuxmi@linuxmi:~$ ls -a 

你現(xiàn)在可以像對(duì)待其他文本文件一樣對(duì).bash_history文件進(jìn)行操作。

你需要了解的三個(gè)相關(guān)環(huán)境變量是HISTFILE,HISTFILESIZE和HISTSIZE。

HISTFILE—/home/linuxmi/.bash_history

HISTFILESIZE—2000

HISTSIZE—1000

HISTFILE變量保存Bash歷史記錄文件的名稱和位置。HISTFILESIZE是.bash_history文件中可以存儲(chǔ)多少個(gè)命令。HISTSIZE是緩存的命令數(shù)。一旦達(dá)到1000條命令,最舊的命令將被丟棄,而新的命令將被保存。 

  1. linuxmi@linuxmi:~$ echo $HISTSIZE  
  2. 1000  
  3. linuxmi@linuxmi:~$ echo $HISTFILESIZE  
  4. 2000  
  5. linuxmi@linuxmi:~$ echo $HISTFILE  
  6. /home/linuxmi/.bash_history 

每個(gè)用戶(包括root用戶)都默認(rèn)分配了這些變量和大小。如果要更改這些變量,請(qǐng)?jiān)谥髂夸浿芯庉?bashrc文件。例如,如果要將大小變量更改為800個(gè)命令,請(qǐng)編輯.bashrc文件并使用以下條目:

export HISTSIZE=800

export HISTFILESIZE=800

要使用新值而不用注銷及重新登錄,執(zhí)行.bashrc文件命令即可。 

  1. linuxmi@linuxmi:~$ . ~/.bashrc 

現(xiàn)在,你的值現(xiàn)在對(duì)于當(dāng)前shell和任何子shell都是激活的。

如果你不想讓你的歷史記錄保留重復(fù)的命令,你可以通過添加以下內(nèi)容到你的.bashrc文件來指示你的歷史記錄忽略重復(fù)的條目:

一個(gè)問題

Bash history的問題在于,直到您注銷,它才被寫入.bash_history文件。這使得不可能使用history命令進(jìn)行腳本編寫。例如,假設(shè)您正在班級(jí)教學(xué)Linux,并且想檢查學(xué)生是否已運(yùn)行特定命令以將其文件復(fù)制到一個(gè)掛載的外部驅(qū)動(dòng)器。如果學(xué)生保持登錄狀態(tài),您將無法確定是否已執(zhí)行復(fù)制,因?yàn)槟哪_本使用其歷史文件(/home/linuxmi/.bash_history)來檢查命令是否已經(jīng)運(yùn)行。

解決方案

要變通解決此功能,請(qǐng)為history命令使用write選項(xiàng)。作為課堂教學(xué)的一部分,即使學(xué)生沒有注銷,您也要讓他們運(yùn)行該命令以保存其歷史記錄。 

  1. linuxmi@linuxmi:~/www.linuxmi.com$ history -w 

現(xiàn)在開始所有當(dāng)前會(huì)話命令歷史記錄都將寫入HISTFILE?,F(xiàn)在,您的檢查腳本可以輕松找到命令是否已運(yùn)行。您還必須相信學(xué)生會(huì)運(yùn)行歷史記錄命令。

另一個(gè)問題

由于HISTSIZE和HISTFILESIZE相對(duì)較大(1000個(gè)命令或者2000個(gè)命令),因此學(xué)生有可能在之前運(yùn)行過該命令。您可以將export HISTCONTROL=ignoredups條目添加到他們的.bashrc中,但是如果學(xué)生幾天前運(yùn)行了類似的命令,這將沒有用,因?yàn)槲募⒅伙@示一個(gè)命令。

這個(gè)問題的解決方案

要變通解決此問題,你應(yīng)該在登錄后清除學(xué)生的歷史記錄。再次編輯.bashrc文件,并向其中添加以下命令。

history -c

此命令在每次登錄時(shí)清除其歷史記錄,并消除了選擇以前運(yùn)行的命令的問題。您不必?fù)?dān)心會(huì)從以前的會(huì)話中拾取命令,因?yàn)槿绻?etc/profile中設(shè)置了空閑時(shí)間限制,則系統(tǒng)會(huì)在指定的時(shí)間段后注銷空閑用戶。編輯/etc/profile文件并添加以下條目。

TMOUT=180

TMOUT變量使用幾秒鐘的空閑時(shí)間。在這種情況下,180秒等于3分鐘。您可以將此值設(shè)置為任何秒數(shù)。該值將在所有用戶的下次登錄時(shí)生效。要設(shè)置單個(gè)超時(shí)值,請(qǐng)使用.bashrc,但要知道到用戶可以隨意更改此文件。

總結(jié)

Bash history是一個(gè)方便的工具,但是如果您不熟悉它的選項(xiàng)和怪癖,可能會(huì)令人沮喪。history中還有更多可用選項(xiàng)。你可以查看手冊(cè)頁以獲取更多信息。請(qǐng)記住,你輸入的每一個(gè)命令都是正在形成的歷史記錄。 

 

責(zé)任編輯:龐桂玉 來源: Linux公社
相關(guān)推薦

2015-08-20 13:43:17

NFV網(wǎng)絡(luò)功能虛擬化

2010-05-17 09:13:35

2014-03-12 11:11:39

Storage vMo虛擬機(jī)

2021-06-07 08:18:12

云計(jì)算云端阿里云

2010-05-26 19:12:41

SVN沖突

2024-12-12 09:40:27

Strace命令監(jiān)控

2009-06-01 09:04:44

Google WaveWeb

2018-03-01 09:33:05

軟件定義存儲(chǔ)

2016-04-06 09:27:10

runtime解密學(xué)習(xí)

2009-09-15 15:34:33

Google Fast

2023-11-02 09:55:40

2016-11-16 09:06:59

2024-02-14 09:00:00

機(jī)器學(xué)習(xí)索引ChatGPT

2025-01-07 15:07:13

2010-05-11 10:19:17

VMforceJava云計(jì)算

2020-04-14 10:44:01

區(qū)塊鏈滲透測(cè)試比特幣

2021-09-17 15:54:41

深度學(xué)習(xí)機(jī)器學(xué)習(xí)人工智能

2010-06-17 10:53:25

桌面虛擬化

2011-08-02 08:59:53

2017-10-16 05:56:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)