linux历史数据导出命令,Linux Bash history从入门到进阶
像所有shell一樣,Linux命令行終端保留用戶過(guò)去執(zhí)行的命令的歷史記錄(bash history)。此歷史記錄是永久性的,即使重新啟動(dòng)系統(tǒng)也會(huì)保留在內(nèi)存中。這些存儲(chǔ)的命令可以自由重復(fù)使用。
使用bash歷史記錄(history)的命令是“history”。此命令是內(nèi)置 bash命令,用于提取有關(guān)Linux用戶在所有先前會(huì)話中已執(zhí)行的命令的歷史記錄信息。在本教程中,我們將通過(guò)學(xué)習(xí)history命令的正確用法來(lái)使您充分利用shell歷史。 Linux默認(rèn)將特定用戶的命令歷史記錄存儲(chǔ)在?/.bash_history文件中。
查看整個(gè)歷史
用戶可以使用以下簡(jiǎn)單命令,查看shell命令的整個(gè)歷史記錄:
$ history
歷史記錄將以以下默認(rèn)格式打印在屏幕上:
在上圖中,您可以看到所有命令的列表,并為每個(gè)命令分配了一個(gè)編號(hào)。數(shù)字1命令對(duì)應(yīng)于您運(yùn)行的第一個(gè)命令,最后一個(gè)編號(hào)的命令代表您執(zhí)行的最新命令。
如果自從使用bash以來(lái)一直在運(yùn)行許多命令,您會(huì)發(fā)現(xiàn)這里將顯示成百上千個(gè)這樣的命令。要訪問(wèn)一些相關(guān)命令,您可以過(guò)濾歷史記錄功能顯示的結(jié)果。
過(guò)濾歷史記錄輸出
如果要基于先前命令中可能使用的特定關(guān)鍵字過(guò)濾歷史記錄輸出,則可以按以下方式使用history命令:
$ history | grep [keyword]
例:在此示例中,我只想查看在 shell 中運(yùn)行過(guò)的ping命令。因此,我將使用以下命令:
$history | grep ping
您可以看到我的輸出現(xiàn)在僅顯示包含搜索關(guān)鍵字“ping”的命令
查看許多最近的命令
您還可以查看特定數(shù)量的命令,例如:
N個(gè)最近的命令
或者
N個(gè)最舊的命令
N最近的命令
您可以通過(guò)以下命令查看特定數(shù)量的最近運(yùn)行的命令:
$ history | tail -n
例:
在此示例中,我想用關(guān)鍵字“ ping”查看我運(yùn)行的最后3條命令:
$ history | grep ping |tail -3
輸出僅顯示3個(gè)最近的ping命令,而不是整個(gè)歷史記錄
N個(gè)最舊的命令
您可以通過(guò)以下命令查看特定數(shù)量的最早的運(yùn)行命令:
$ history | head -n
例:
在此示例中,我想查看我運(yùn)行的最舊的3條命令,關(guān)鍵字為“ ping”:
$ history | grep ping |head -3
輸出僅顯示3個(gè)最舊的ping命令,而不是整個(gè)歷史記錄
列出所有帶有日期和時(shí)間戳的命令
如果要查看命令歷史記錄以及日期和時(shí)間戳,請(qǐng)使用以下導(dǎo)出命令:
$ export HISTTIMEFORMAT='%F, %T'
現(xiàn)在,當(dāng)您希望查看歷史記錄時(shí),只需運(yùn)行history命令以以下格式查看輸出:
請(qǐng)注意,此格式更改是臨時(shí)的,關(guān)閉會(huì)話后將恢復(fù)為以前的標(biāo)準(zhǔn)。
從歷史導(dǎo)航命令
在命令行上時(shí),您可以瀏覽以前運(yùn)行的命令,也可以通過(guò)提供關(guān)鍵字來(lái)調(diào)用一些最近使用的命令。
滾動(dòng)瀏覽命令
您可以使用鍵盤命令瀏覽歷史記錄命令
向上箭頭/Ctrl + P
顯示以前使用的命令。您可以多次點(diǎn)擊這些控件以返回到歷史記錄中的特定命令。
向下箭頭/Ctrl + N
顯示您使用的下一個(gè)命令。您可以多次點(diǎn)擊這些控件以前進(jìn)到歷史記錄中的特定命令。
ALT + R
如果在當(dāng)前行上編輯從歷史記錄中拉出的命令,則可以使用此控件將其還原為原始命令。
調(diào)出命令
您可以使用以下組合鍵從歷史記錄中調(diào)用、運(yùn)行或選擇不運(yùn)行特定命令:
CTRL + R
通過(guò)指定搜索字符串從歷史記錄中調(diào)用命令。
CTRL + O
運(yùn)行通過(guò)Ctrl + R調(diào)用的命令
CTRL + G
退出歷史記錄,而無(wú)需運(yùn)行通過(guò)Ctrl + R調(diào)用的命令
例:
在此示例中,我按了CTRL + R,然后提供了搜索字符串“ ar”。歷史記錄顯示命令“ arch”。
通過(guò)按ctrl + O運(yùn)行命令“ arch”時(shí),它顯示了我系統(tǒng)的CPU體系結(jié)構(gòu):
history進(jìn)階
bash歷史記錄的真正魅力在于使用各種命令并自定義history命令本身以充分利用歷史記錄功能:
從歷史記錄運(yùn)行命令
如前所述,history命令通過(guò)將數(shù)字與每個(gè)命令相關(guān)聯(lián)來(lái)顯示命令。通過(guò)使用以下命令,您可以根據(jù)其歷史記錄從歷史記錄中運(yùn)行某個(gè)命令:
$ !#
例:
在這里,我從歷史記錄中運(yùn)行命令號(hào)95:
$ !95
輸出顯示“ lscpu”的結(jié)果,該結(jié)果在我的bash歷史記錄中列為命令編號(hào)95。此命令顯示我的CPU和操作系統(tǒng)規(guī)格。
您可以使用以下命重新執(zhí)行上一個(gè)命令:
$ !!
例:
在這里,您可以看到我運(yùn)行了“ arch”命令。通過(guò)運(yùn)行上述命令,我可以使用重新執(zhí)行'arch'命令來(lái)查看我的CPU體系結(jié)構(gòu),如下所示:
為了從歷史記錄中搜索命令,然后運(yùn)行它,請(qǐng)使用以下命令:
$ ![keyword]
例:
我將使用以下命令對(duì)最后一個(gè)帶有關(guān)鍵字“ dconf”的命令重新執(zhí)行:
$ !dconf
您可以在下圖中顯示,它的確是我運(yùn)行的最后一個(gè)dconf命令。
使用先前命令中的參數(shù)
Linux bash使您可以使用上一個(gè)命令中的參數(shù)來(lái)運(yùn)行新命令。當(dāng)您要避免重新輸入冗長(zhǎng)或復(fù)雜的參數(shù)時(shí),它特別有用。為此,可以使用以下命令:
使用上一個(gè)命令的最后一個(gè)參數(shù)
$ [Command] !$
變量!$中存儲(chǔ)了前一個(gè)命令的最后一個(gè)參數(shù)。
例:
在此示例中,我將創(chuàng)建一個(gè)長(zhǎng)名稱的文件。
Nano [longnameOfaFile]
然后,通過(guò)避免再次按以下方式鍵入長(zhǎng)名稱,我將其復(fù)制到另一個(gè)位置:
Cp !$ [destinationfolder]
您可以看到我可以使用變量!$復(fù)制文件而無(wú)需重新輸入文件名!
使用上一個(gè)命令的第一個(gè)參數(shù)
有時(shí),只有前一個(gè)命令的第一個(gè)參數(shù)對(duì)當(dāng)前命令有幫助。
在這種情況下,可以使用以下命令:
$ [command] !^
例:
在以下示例中,我通過(guò)指定主機(jī)名和計(jì)數(shù)作為參數(shù)來(lái)運(yùn)行ping命令。現(xiàn)在,我想在新命令中使用主機(jī)名(第一個(gè)參數(shù))而不是2(最后一個(gè)參數(shù))。為此,我將使用以下命令:
$ ping !^
使用上一個(gè)命令的所有參數(shù)
您還可以通過(guò)使用以下命令來(lái)使用上一命令中的所有參數(shù):
$ !*
使用歷史命令中的一個(gè)參數(shù)
您還可以使用歷史記錄中的命令的某個(gè)參數(shù)。為此,請(qǐng)使用以下命令:
$ [command] ![keyword]:#
例:
$ echo !cp:2
該命令將采用以下參數(shù):
命令:echo
關(guān)鍵字:cp? [搜索的歷史命令的關(guān)鍵詞,取最后一個(gè)匹配的命令]
#:2(命令的第二個(gè)參數(shù))
以下輸出顯示了我運(yùn)行的最后一個(gè)cp命令的第二個(gè)參數(shù):
使用歷史命令中的所有參數(shù)
以下命令將存儲(chǔ)搜索到的history命令中的所有參數(shù),并在當(dāng)前命令中使用它們:
$ command ![keyword]:*
例:
在以下命令中,我將使用echo命令打印最后一個(gè)cp命令的所有參數(shù),如下所示:
$ echo ![cp]:*
修改和運(yùn)行以前的命令
如果您鍵入了錯(cuò)誤的命令,或者想通過(guò)更改其中的一些文本來(lái)對(duì)命令再次執(zhí)行;以下是這樣做的方法:
$ ^[previoustext]^[newtext]
例:
我將命令“ grep”錯(cuò)誤鍵入為“ gep”,現(xiàn)在我想通過(guò)更正文本來(lái)運(yùn)行命令:
$ ^gep^grep
現(xiàn)在您可以看到我的更正命令將按如下所示正確運(yùn)行:
清楚history記錄
為了清除bash的歷史記錄,請(qǐng)使用以下命令:
$ history -c
此命令將清除您的歷史記錄并從文件?/.bash_history中刪除所有內(nèi)容
在本教程中,我們了解到,雖然打印整個(gè)歷史記錄內(nèi)容可能沒(méi)有用,但通過(guò)我們學(xué)到的命令優(yōu)化輸出還是非常有用的。
總結(jié)
以上是生活随笔為你收集整理的linux历史数据导出命令,Linux Bash history从入门到进阶的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: eureka-client无法启动com
- 下一篇: linux 其他常用命令