對於Linux愛好者和開發者來說,命令列是一個極為重要的工具。但是,在頻繁使用命令列的過程中,我們難免會出現輸入錯誤或忘記之前曾經使用過的命令等問題。此時,Linux命令歷史記錄就可以派上用場了。它能夠讓我們輕鬆地找到並重複使用先前的命令,大大提高我們的工作效率。下面,就讓我們一起來探究一下這個強大的工具吧!
history的基礎
#HISTSIZE
變數值設定儲存在歷史清單中的指令數。預設情況下,該值為 500。這些先前發出的命令(稱為歷史列表)儲存在歷史文件中。它的預設位置是~/.bash_history
,這個位置儲存在shell變數HISTFILE
。
本文中使用!
指令將 bash 歷史記錄清單中的指令引入輸入。此功能使用戶可以輕鬆地快速重複命令、替換文字、操作參數和修復先前命令中的拼字錯誤。
指令重複實例
#以下是一些可以使用!
執行操作的範例。
重複符合字串開頭的最後一個指令
!
後面跟著要執行的命令相符的第一個字元(或字串)將重複該命令的實例:
[root@localhost ~]# ls /root/ anaconda-ks.cfg centos2ol.sh employee.json list_users new.txt wsbkuplog.txt [root@localhost ~]# !l ls /root/ anaconda-ks.cfg centos2ol.sh employee.json list_users new.txt wsbkuplog.txt [root@localhost ~]# !ls ls /root/ anaconda-ks.cfg centos2ol.sh employee.json list_users new.txt wsbkuplog.txt
重複比對字串中任意位置的最後一個指令
#!?
格式與上述相同,但李世明令不必是命令的開頭:
[root@localhost ~]# cat employee.json [{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"}, {"name": "Todd Gray","id": "009"}] [root@localhost ~]# !?employee cat employee.json [{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"}, {"name": "Todd Gray","id": "009"}] [root@localhost ~]# !?json cat employee.json [{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"}, {"name": "Todd Gray","id": "009"}]
重複歷史記錄中的第 n 個指令
#重複 bash 歷史記錄中的第 n 個指令:
[root@localhost ~]# !772
重複最後一條指令
如果有一個我一直使用的指令,那就是!!
。重複歷史清單中的最後一個指令,其行為與 !-1
相同:
[root@localhost ~]# cat employee.json [{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"}, {"name": "Todd Gray","id": "009"}] [root@localhost ~]# !! cat employee.json [{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"}, {"name": "Todd Gray","id": "009"}] [root@localhost ~]# !-1 cat employee.json [{"name": "John Brooks","id": "003"},{"name": "Randy Park","id": "053"}, {"name": "Todd Gray","id": "009"}] [root@localhost ~]#
#
如果上一條指令忘記加上sudo
來執行,可以結合!!
來使用。還可以後面結合管道符使用。
$ yum update Loaded plugins: priorities, update-motd, upgrade-helper You need to be root to perform this command. $ sudo !! sudo yum update Loaded plugins: priorities, update-motd, upgrade-helper $ ls dir dir1 dir2 file file1 file2 hello.txt $ !! | grep file ls | grep file file file1 file2
重複並替換字串
#我經常發輸入較長的指令,然後用不同的參數重新輸入。或者,我需要重新發出一個命令,因為我之前的命令中有一個錯字。字串替換讓我無需重新輸入整個長命令即可完成此操作。下面是語法:
!!:s^oldstring^newstring
指令中的^
是分隔符,用後面的newstring字串取代前面的oldstring字串。
[root@localhost ~]# ll /etc/httpd/conf.d total 16 -rw-r--r-- 1 root root 2926 Nov 4 2020 autoindex.conf -rw-r--r-- 1 root root 400 Nov 4 2020 README -rw-r--r-- 1 root root 1252 Nov 4 2020 userdir.conf -rw-r--r-- 1 root root 764 Nov 4 2020 welcome.conf [root@localhost ~]# !!:s^conf.d^conf ll /etc/httpd/conf total 28 -rw-r--r-- 1 root root 11899 Nov 4 2020 httpd.conf -rw-r--r-- 1 root root 13064 Nov 4 2020 magic [root@localhost ~]#
通过本文的学习,我们已经学会了如何使用Linux命令历史记录来提高我们的命令行操作效率。同时,我们还了解了常用的历史命令操作以及如何对历史记录进行配置和管理。希望这篇文章对你在使用Linux命令行时有所帮助,并能够让你更加高效地完成自己的工作。
以上是Linux命令歷史記錄-輕鬆提高命令列效率的詳細內容。更多資訊請關注PHP中文網其他相關文章!