linux命令歷史
發(fā)布時間:2017-02-06 來源: 歷史回眸 點擊:
linux命令歷史篇一:Linux基礎(chǔ)教程 linux下學(xué)習(xí)history命令的用法實例
Linux基礎(chǔ)教程 linux下學(xué)習(xí)history命令的用法實例
1.使用 HISTTIMEFORMAT 顯示時間戳
當(dāng)你從命令行執(zhí)行 history 命令后,通常只會顯示已執(zhí)行命令的序號和命令本身。如果你想要查看命令歷史的時間戳,那么可以執(zhí)行:
復(fù)制代碼代碼如下:
# export HISTTIMEFORMAT='%F %T '
# history | more
1 2008-08-05 19:02:39 service network restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
4 2008-08-05 19:02:39 cat /etc/redhat-release
注意:這個功能只能用在當(dāng) HISTTIMEFORMAT 這個環(huán)境變量被設(shè)置之后,之后的那些新執(zhí)行的 bash 命令才會被打上正確的時間戳。在此之前的所有命令,都將會顯示成設(shè)置HISTTIMEFORMAT 變量的時間。
2.使用 Ctrl+R 搜索歷史
Ctrl+R 是我經(jīng)常使用的一個快捷鍵。此快捷鍵讓你對命令歷史進行搜索,對于想要重復(fù)執(zhí)行某個命令的時候非常有用。當(dāng)找到命令后,通常再按回車鍵就可以執(zhí)行該命令。如果想對找到的命令進行調(diào)整后再執(zhí)行,則可以按一下左或右方向鍵。
復(fù)制代碼代碼如下:
# [Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt](reverse-i-search)`red‘: cat /etc/redhat-release
[Note: Press enter when you see your command, which will execute the command from the history]# cat /etc/redhat-release
Fedora release 9 (Sulphur)
3.快速重復(fù)執(zhí)行上一條命令
有 4 種方法可以重復(fù)執(zhí)行上一條命令:
使用上方向鍵,并回車執(zhí)行。
按 !! 并回車執(zhí)行。
輸入 !-1 并回車執(zhí)行。
按 Ctrl+P 并回車執(zhí)行。
4.從命令歷史中執(zhí)行一個指定的命令
在下面的例子中,如果你想重復(fù)執(zhí)行第 4 條命令,那么可以執(zhí)行 !4:
復(fù)制代碼代碼如下:
# history | more
1 service network restart
2 exit
3 id
4 cat /etc/redhat-release
# !4
cat /etc/redhat-release
Fedora release 9 (Sulphur)
5.通過指定關(guān)鍵字來執(zhí)行以前的命令
在下面的例子,輸入 !ps 并回車,將執(zhí)行以 ps 打頭的命令:
復(fù)制代碼代碼如下:
# !ps
ps aux | grep yp
root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind
root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp
6.使用 HISTSIZE 控制歷史命令記錄的總行數(shù)
將下面兩行內(nèi)容追加到 .bash_profile 文件并重新登錄 bash shell,命令歷史的記錄數(shù)將變成 450 條:
復(fù)制代碼代碼如下:
# vi ~/.bash_profile
HISTSIZE=450
HISTFILESIZE=450
7.使用 HISTFILE 更改歷史文件名稱
默認情況下,命令歷史存儲在 ~/.bash_history 文件中。添加下列內(nèi)容到 .bash_profile 文件并重新登錄 bash shell,將使用 .commandline_warrior 來存儲命令歷史:
復(fù)制代碼代碼如下:
# vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior
8.使用 HISTCONTROL 從命令歷史中剔除連續(xù)重復(fù)的條目
在下面的例子中,pwd 命令被連續(xù)執(zhí)行了三次。執(zhí)行 history 后你會看到三條重復(fù)的條目。要剔除這些重復(fù)的條目,你可以將 HISTCONTROL 設(shè)置為 ignoredups:
復(fù)制代碼代碼如下:
# pwd
# pwd
# pwd
# history | tail -4
44 pwd
45 pwd
46 pwd [Note that there are three pwd commands in history, after executing pwd 3 times as shown above]
47 history | tail -4
# export HISTCONTROL=ignoredups
# pwd
# pwd
# pwd
# history | tail -3
56 export HISTCONTROL=ignoredups
57 pwd [Note that there is only one pwd command in the history, even after executing pwd 3 times as shown above]
58 history | tail -4
9.使用 HISTCONTROL 清除整個命令歷史中的重復(fù)條目
上例中的 ignoredups 只能剔除連續(xù)的重復(fù)條目。要清除整個命令歷史中的重復(fù)條目,可以將 HISTCONTROL 設(shè)置成 erasedups:
復(fù)制代碼代碼如下:
# export HISTCONTROL=erasedups
# pwd
# servicehttpd stop
# history | tail -3
38 pwd
39 service httpd stop
40 history | tail -3
# ls -ltr
# servicehttpd stop
# history | tail -6
35 export HISTCONTROL=erasedups
36 pwd
37 history | tail -3
38 ls -ltr
39 service httpd stop
[Note that the previous service httpd stop after pwd got erased]
40 history | tail -6
10.使用 HISTCONTROL 強制 history 不記住特定的命令
將 HISTCONTROL 設(shè)置為 ignorespace,并在不想被記住的命令前面輸入一個空格:
復(fù)制代碼代碼如下:
# export HISTCONTROL=ignorespace
# ls -ltr
# pwd
# servicehttpd stop [Note that there is a space at the beginning of service, to ignore this command from history]
# history | tail -3
67 ls -ltr
68 pwd
69 history | tail -3
11.使用 -c 選項清除所有的命令歷史
如果你想清除所有的命令歷史,可以執(zhí)行:
復(fù)制代碼代碼如下:
# history -c
12.命令替換
linux命令歷史篇二:Linux基礎(chǔ)教程 教你隱藏Linux的命令行歷史
Linux基礎(chǔ)教程教你隱藏Linux的命令行歷史
如果你是 Linux 命令行的用戶,有的時候你可能不希望某些命令記錄在你的命令行歷史中。原因可能很多,例如,你在公司擔(dān)任某個職位,你有一些不希望被其它人濫用的特權(quán)。亦或者有些特別重要的命令,你不希望在你瀏覽歷史列表時誤執(zhí)行。
然而,有方法可以控制哪些命令進入歷史列表,哪些不進入嗎?或者換句話說,我們在 Linux 終端中可以開啟像瀏覽器一樣的無痕模式嗎?答案是肯定的,而且根據(jù)你想要的具體目標(biāo),有很多實現(xiàn)方法。在這篇文章中,將和大家討論一些行之有效的方法。
注意:文中出現(xiàn)的所有命令都在 Ubuntu 下測試過。
不同的可行方法
前面兩種方法已經(jīng)在之前一篇文章中描述了。如果你已經(jīng)了解,這部分可以略過。然而,如果你不了解,建議仔細閱讀。
1. 在命令前插入空格
是的,沒看錯。在命令前面插入空格,這條命令會被 shell 忽略,也就意味著它不會出現(xiàn)在歷史記錄中。但是這種方法有個前提,只有在你的環(huán)境變量 HISTCONTROL 設(shè)置為 "ignorespace" 或者 "ignoreboth" 才會起作用。在大多數(shù)情況下,這個是默認值。
所以,像下面的命令(LCTT 譯注:這里[space]表示輸入一個空格):
[space]echo "this is a top secret"
如果你之前執(zhí)行過如下設(shè)置環(huán)境變量的命令,那么上述命令不會出現(xiàn)在歷史記錄中。
export HISTCONTROL = ignorespace
下面的截圖是這種方式的一個例子。
第四個 "echo" 命令因為前面有空格,它沒有被記錄到歷史中。
2. 禁用當(dāng)前會話的所有歷史記錄
如果你想禁用某個會話所有歷史,你可以在開始命令行工作前簡單地清除環(huán)境變量 HISTSIZE 的值即可。執(zhí)行下面的命令來清除其值:
export HISTSIZE=0
HISTSIZE 表示對于 bash 會話其歷史列表中可以保存命令的個數(shù)(行數(shù))。默認情況,它設(shè)置了一個非零值,例如在我的電腦上,它的值為 1000。
所以上面所提到的命令將其值設(shè)置為 0,結(jié)果就是直到你關(guān)閉終端,沒有東西會存儲在歷史
記錄中。記住同樣你也不能通過按向上的箭頭按鍵或運行 history 命令來看到之前執(zhí)行的命令。
3. 工作結(jié)束后清除整個歷史
這可以看作是前一部分所提方案的另外一種實現(xiàn)。唯一的區(qū)別是在你完成所有工作之后執(zhí)行這個命令。下面是剛說到的命令:
history -cw
剛才已經(jīng)提到,這個和 HISTSIZE 方法有相同效果。
4. 只針對你的工作關(guān)閉歷史記錄
雖然前面描述的方法(2 和 3)可以實現(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í)行下面的命令,從歷史記錄中刪除那個指定的項:
history -d [num]
第二個‘echo’命令被成功的刪除了。
同樣的,你可以使用向上的箭頭一直往回翻看歷史記錄。當(dāng)你發(fā)現(xiàn)你感興趣的命令出現(xiàn)在終端上時,按下“Ctrl + U”清除整行,也會從歷史記錄中刪除它。
總結(jié)
有多種不同的方法可以操作 Linux 命令行歷史來滿足你的需求。然而請記住,從歷史中隱藏或者刪除命令通常不是一個好習(xí)慣,盡管本質(zhì)上這并沒有錯。但是你必須知道你在做什么,以及可能產(chǎn)生的后果。
linux命令歷史篇三:強有力的Linux歷史命令
強有力的Linux歷史命令 你還記得幾個
忘記歷史的Linux用戶注定要輸入很多信息。這也讓強有力的歷史命令不僅在援引之前執(zhí)行命令時有用,在調(diào)用其它很少用到的命令時也有用。本文就介紹些強有力的Linux歷史命令,不知你還能記起幾個? AD:
"忘記歷史的Linux用戶注定要輸入很多信息!
這也讓強有力的歷史命令(包括Bash shell的歷史變體)不僅在援引之前執(zhí)行命令而不需重新輸入它們時有用,在調(diào)用其它很少用到的命令時也有用,這省去了必須重新使用它們的麻煩。該命令按時間順序列出了之前執(zhí)行命令的清單。
該命令的輸出示例如下: $ history
...
62 rm 092210.sql
63 mysqldump
64 mysqldump -u root -p dev_gamenomad_com > 092210.sql 65 more 092210.sql
66 rm 092210.sql
...
9991 mkdir chapter05
9992 cd chapter05
9993 dir
9994 npm install websocket-server
9995 node hello.js
9996 exit
9997 history
與每條命令相關(guān)的順序號服務(wù)于重要目的,允許用戶通過提供直接跟著感嘆號的順序號來重新執(zhí)行相關(guān)命令,如下: $ !10000
sudo /etc/init.d/apache2 start
* Starting web server apache2
但這并不是全部。Linux歷史命令能做到更多,本文后續(xù)部分也將提及。
掌控歷史擴展
敲擊向上箭頭鍵會顯示之前執(zhí)行的命令,敲擊Enter鍵會再次執(zhí)行該命令。但是還可以使用另一個可能更快的包括歷史擴展功能的選擇:
$ !!
如果你重復(fù)執(zhí)行同樣兩條或三條命令的不同排列組合,你還可以選擇通過識別其位移負指數(shù)來執(zhí)行出現(xiàn)在上一命令出現(xiàn)處的命令。例如,執(zhí)行之前命令的前一命令(回退兩條命令),運用以下序列:
$ !-2
執(zhí)行早期命令的另一方式是輸入緊跟著感嘆號的命令序列號的開頭。符合字符對象的第一條命令會執(zhí)行。舉例來說,假設(shè)最后三條命令如下: $ history
... 9876 build-book /home/wjgilmore/easy_php
9877 mkdir chapter05
9878 cd chapter05
9879 touch chapter05.md
你可以只通過運行以下命令來再次執(zhí)行構(gòu)書腳本:
$ !b
用兩步過程創(chuàng)建一個確認它的新目錄和導(dǎo)航和以運用歷史擴展縮短。在本例中,我創(chuàng)建了一個叫做
easy_bash的新目錄,位置在/home/wjgilmore/books。要確認該目錄,運用!$來獲得在前一命令中發(fā)現(xiàn)在最后“字符”:
$ mkdir /home/wjgilmore/books/easy_bash
$ cd !$
搜索命令歷史
雖然可以翻閱命令歷史(或使用grep命令),但在使用Ctrl+R開放選擇搜索它之后也可以調(diào)用該命令的片段,提示的命令行將如下所示:
(reverse-i-search)`':
開始輸入命令片段,命令行會實時更新反映出最符合的一條。輸入apa后會出現(xiàn)類似于這樣的命令: (reverse-i-search)`apa': sudo /etc/init.d/apache2 start
當(dāng)你看到想要的命令,敲擊Enter執(zhí)行它,或者敲擊向上箭頭鍵在重新執(zhí)行前修改它。
調(diào)整歷史行為
你可以做很多有趣的設(shè)置更改來控制命令歷史的行為方式。例如,Bash shell設(shè)置的默認歷史大小是500條記錄,這個限制很快就達到了,即使是很小的命令行相互作用。你可以通過設(shè)置在Bash配置文件(.bash
rc,位于主目錄中)上發(fā)現(xiàn)的HISTSIZE變量提高限制數(shù)。HISTSIZE=10000
你在命名為HISTCONTROL的.bashrc中通常還會遇到另一個與歷史有關(guān)的變量。該變量幫助明確規(guī)定歷史文件中的存放內(nèi)容(位于.bash_history,也可見于主目錄中)。例如,你也許在檢查最新的日志文件附件時重復(fù)執(zhí)行了尾命令,就在運行tail的幾分鐘里。通過重復(fù)來集群歷史文件不太實際,通過設(shè)置它為ignoredups來讓HISTCONTROL變量忽視復(fù)制行。
HISTCONTROL=ignoredups
可疑效用的另一個HISTCONTROL設(shè)置是忽略空格。該HISTCONTROL設(shè)置的結(jié)果是所有前面有空格的執(zhí)行命令都從歷史文件中刪除。這對于不跟蹤每條命令似乎起了反作用,但是如果你除了ignoredups之外還想實現(xiàn)該功能,你可以將兩者設(shè)置成:
HISTCONTROL=ignoreboth
我最后要談及的一個功能是命令替換。假設(shè)你想基于一個虛擬主機配置文件模板快速配置一群虛擬主機。這些命令序列可能非常長,就像下面所示: $ cp vhost.template /etc/apache2/sites-available/dev.example.com
$ cp vhost.template /etc/apache2/sites-available/forum.example.com
$ cp vhost.template /etc/apache2/sites-available/staging.example.com
通常你執(zhí)行該一列命令的方法會是首先輸入和執(zhí)行,接著向上滾動、刪除尾行片段(dev.example.com),然后輸入下一片段(forum.example.com),然后重新執(zhí)行。另一種方法,你可以運用命令替換來快速地用一行字符串替換另一相關(guān)字符串,如下所示:
$ !!:s/dev/forum
該命令行在指向-點擊界面中已為用戶帶來了大量好處,讓任務(wù)執(zhí)行和操作系統(tǒng)導(dǎo)航可以快速且優(yōu)雅地完成。最大程度上地利用歷史命令只能增加這些功能,促進生產(chǎn)力會走得更遠。
相關(guān)熱詞搜索:命令 歷史 linux linux查看歷史命令 linux清除歷史命令
熱點文章閱讀