history命令
1.? 歷史命令不會(huì)無休止的保存下去,默認(rèn)的最大保存量為1000條
? ? 輸入:echo $HISTSIZE
1000條從profile文件中定義的,可以在里面修改保存數(shù)量。
/etc/profile用于整個(gè)系統(tǒng)所有用戶,?~/.bash_profile,?~/.profile和~/.bashrc?用于各個(gè)用戶,這里的"~"符號就是各當(dāng)前用戶的$HOME?
2.有些歷史命令可能是前幾天的操作命令,前幾天的命令不可能保存在當(dāng)前內(nèi)存中,所以保存在文件.bash_history中,只有退出后,歷史命令才會(huì)從當(dāng)前內(nèi)存中保存到文件里.
? ? ? 輸入:ls -a
? ? ? 然后:?cat .bash_history可以看到歷史命令
3.隨機(jī)數(shù):echo$RANDOM,但是隨機(jī)數(shù)比較大,所以取80摩%80,就會(huì)隨機(jī)80以內(nèi)的數(shù)字了 。
? ? ? ? ?echo?$RANDOM
? ? ? ? ?echo $[$RANDOM%80]
?
?
?
4.? 保存你輸入的命令歷史??梢杂盟鼇碇貜?fù)執(zhí)行命令。登錄shell時(shí),會(huì)讀取命令歷史文件中記錄下的命令~/.bash_history?
登錄進(jìn)shell后,新執(zhí)行的命令只會(huì)記錄在緩存中;這些命令會(huì)用戶退出時(shí)“追加”至命令歷史文件中。
5.? 重復(fù)前一個(gè)命令,有4種方法:A.重復(fù)前一個(gè)命令使用上方向鍵,并回車執(zhí)行。 B.按!! 并回車執(zhí)行。 C.輸入!-1 并回車執(zhí)行。 D.按Ctrl+p 并回車執(zhí)行。
6.? 要重新調(diào)用前一個(gè)命令中最后一個(gè)參數(shù):A? !$ 表示.? B? Esc+ .(點(diǎn)擊Esc鍵后松開,然后點(diǎn)擊. 鍵)? C? Alt+ .(按住Alt鍵的同時(shí)點(diǎn)擊. 鍵)
7.? !字符串:?? 重復(fù)前一個(gè)以“字符串”開頭的命令
8.? !?字符串:? 重復(fù)前一個(gè)包含”字符串“的命令
9.!num:???? 按照history命令輸出中的序號重復(fù)對應(yīng)命令
10.!-n:?????? 重復(fù)n個(gè)命令之前的那個(gè)命令
11.? 使用up(向上)和down(向下)鍵來上下瀏覽從前輸入的命令
12.? 按ctrl+r可以在命令歷史中搜索命令,隨便輸入一個(gè)你印象中的幾個(gè)字母,就可以找到這個(gè)文件。
13.調(diào)用歷史參數(shù):(cmd為命令)
? #cmd !^ ??????利用上一個(gè)命令的第一個(gè)參數(shù)做cmd的參數(shù)
#cmd !$ ??????利用上一個(gè)命令的最后一個(gè)參數(shù)做cmd的參數(shù)
#cmd !* ? ? ??利用上一個(gè)命令的全部參數(shù)做cmd的參數(shù)
#cmd !:n ? ? ?利用上一個(gè)命令的第n個(gè)參數(shù)做cmd的參數(shù)
?
? #cmd !n:^ ????調(diào)用第n條命令的第一個(gè)參數(shù)
#cmd !n:$ ????調(diào)用第n條命令的最后一個(gè)參數(shù)
#cmd !m:n ????調(diào)用第m條命令的第n個(gè)參數(shù)
#cmd !n:* ????調(diào)用第n條命令的所有參數(shù)
?
? #cmd !string:^ ?從命令歷史中搜索以string開頭的命令,并獲取它的第一個(gè)參數(shù)
#cmd !string:$ ?從命令歷史中搜索以string 開頭的命令,并獲取它的最后一個(gè)參數(shù)
#cmd !string:n ?從命令歷史中搜索以string 開頭的命令,并獲取它的第n個(gè)參數(shù)
#cmd !string:* ?從命令歷史中搜索以string 開頭的命令,并獲取它的所有參數(shù)
14. history命令有三種用法:
history [-c][-d offset] [n]? or? history -anrw[filename]?? or?? history-psarg[arg...]
-c: 清空命令歷史 (清除的是內(nèi)存中的歷史命令,文件里的命令不會(huì)刪除,如果想全部清除,首先刪文件rm -f .bash_history然后在刪命令?????????? history -c)? (history -c 相當(dāng)于HISTSIZE=0? ,把歷史命令長度變?yōu)?/span>0,也是清內(nèi)存,臨時(shí)性的長度。想要永久性不記錄歷史,則需要nano .bash_history 更改里面的HISTSIZE=0)
-d n : 刪除歷史中指定的第n條命令;
#: ???顯示最近的#條歷史
-a: ??追加本次會(huì)話新執(zhí)行的命令歷史列表至歷史文件(從內(nèi)存里轉(zhuǎn)到歷史文件中)
-w: ??保存歷史列表到指定的歷史文件
-a 和 -w 的區(qū)別:
在保存到非默認(rèn)文件夾時(shí)有區(qū)別,history -a a.log? 只是把緩存中的一些歷史命令存到a.log文件里,history -w a.log 是把所有的命令(包括默認(rèn)文件中的歷史命令還有新的緩存命令)保存到a.log里
-n: ??讀歷史文件中未讀過的行到歷史列表(讀未讀過的并不重復(fù)的文件到歷史文件中)
-r: ??讀所有歷史文件并附加到歷史列表
-n和 -r 的區(qū)別:
假如新用戶在同一臺電腦用同樣的賬戶開了個(gè)終端(比如說克隆會(huì)話B端),在B 里輸入會(huì)話,把B里新會(huì)話寫到文件里,可以在B里看見歷史命令,但是在A里卻看不見,這個(gè)時(shí)候,在A里輸入history -n,就會(huì)看見B里的新會(huì)話命令,但是這種命令刪掉了一些重復(fù)命令,當(dāng)你在A里輸入history -r 的時(shí)候,就會(huì)看見A里的所有命令+B里的所有命令。
-p: ??展開歷史參數(shù)成多個(gè)行,但不存在歷史列表中。
-s: ??展開歷史參數(shù)成一行,附加在歷史列表后。(相當(dāng)于偽造歷史命令,但是命令不執(zhí)行,相當(dāng)于nano .bash_history ,在歷史文件下面輸入rm-rf/etc/passwd ,存盤退出,輸入history -n? 最后輸入history?? 就會(huì)看到偽造的歷史命令了 )
?
?
?
?
?
?
?
15.命令歷史相關(guān)環(huán)境變量:
? HISTSIZE:命令歷史記錄的條數(shù);
? ? ? ? ? ?[root@localhost ~]# echo $HISTSIZE
? ? ? ? ?1000
? ? ? ? ? ??其定義文件在/etc/profile,輸入
? ? ? ? ? ~]# nano /etc/profile
? ? ? ? ?在其加入HISTSIZE=XXX,即可定義歷史記錄的條數(shù)
HISTFILE:指定歷史文件,默認(rèn)為~/.bash_history;可以更改文件,如下:
? ? ? ? ? ? nano .bash_profile
? ? ? ?輸入:
? ? ? ? ? ? HISTFILE=/root/history/.log
? ? ? ? ? ? 存盤退出,再exit退出系統(tǒng),重新登錄,輸入echo$HISTFILE 后就顯示新的文件目錄
HISTFILESIZE:命令歷史文件記錄歷史的條數(shù);可修改,同HISTSIZE
HISTTIMEFORMAT:顯示歷史列表時(shí)間(初始值為空),加入HISTTIMEFORMAT=”%F%T “,其歷史列表中就會(huì)顯示時(shí)間。?HISTTIMEFORMAT=”`hostname` %F %T “,加顯主機(jī)名。存盤退出exit后,輸入 cat history.log? 時(shí)就會(huì)看到下面歷史命令,表示距離1970年1月1日有多少秒的時(shí)間(等于date +%s)
HISTIGNORE=“str1:str2“ 忽略string1,string2歷史,臨時(shí)生效(HISTIGNORE=”passwd:echo*”?? *代表后面跟任何東西都忽略了)
?
?
?
16.控制命令歷史的記錄方式:
環(huán)境變量:HISTCONTROL=
ignoredups:? 忽略重復(fù)的命令;(連續(xù)且相同方為“重復(fù)”)
ignorespace: 忽略所有以空白開頭的命令
ignoreboth:? ignoredups, ignorespace
erasedups:??? 刪除重復(fù)命令(無論連續(xù)不連續(xù),只要重復(fù)就刪除)
export 變量名="值“
存放在/etc/profile 或~/.bash_profile
?
轉(zhuǎn)載于:https://blog.51cto.com/jaggerzhang/1831923
總結(jié)
- 上一篇: npm下载安装
- 下一篇: Vlan中 tagged和untagge