linux 歷史命令用法(轉)


許多使用過Linux一段時間的人通過一些基礎操作已經能夠把Linux各方面基本玩轉,但是如果沒有經過系統學習的話就容易缺乏一些實戰技巧。這系列文章介紹一些關於bash的能夠提高效率的技巧,主要是關於歷史命令操作和一些快捷鍵,讓你在命令行下工作效率翻倍,而且這些技巧不失為裝逼利器呀。

 

歷史命令操作篇

 

最基本的查看歷史命令 history

history

!n 編號為n的歷史命令

不用再復制粘貼,或者照着歷史記錄敲了。執行歷史命令記錄里面的某個命令,只需要 ! + 這條命令記錄前的序號,比如

 

 

!767

 

這樣就可以執行767序號對應的命令 ping www.tpircsboy.com

 

 

!-n 倒數第n個歷史命令

你也可以用 ! - (倒數第幾個命令)來執行歷史命令,比如 !-1 就是倒數第一個命令, !-3就是倒數第三個命令

 

!-3

 

 

!! 上一條命令

!! 表示上一條命令,相當於 !-1 。

 

這是一個極為方便實用的命令,比如一條很長的命令而且需要管理員權限,但是好不容易敲完但忘記加sudo,這里就可以直接用 sudo !!來完成剛剛的那條復雜的命令加sudo

 

sudo !!

 


!keyword 查找包含該keyword的歷史命令

如果想查找包含某個關鍵字的歷史命令,可以這樣做

 

!keyword

 

查找包含keyword的歷史命令,然后回車就能執行這條歷史命令

 

 

但是其實這個操作是很危險的,假如你看錯或者記混了歷史命令,在回車前你其實不知道要查找出的是哪條歷史命令,而回車后這條命令就執行了,沒有機會給你看一下查找出的命令具體是什么就執行了。很危險,不推薦這樣做,可以使用 MagicSpace(見下文) 或者使用Ctrl + R 反向查找 (推薦)

 

Ctrl + R 反向查找命令

快捷鍵Ctrl + R ,然后輸入要查找的關鍵字,輸入的同時,bash就會動態地增量搜索,找到想要的歷史命令后可以按回車執行,或者esc把這條提取命令出來但是不執行。再按Ctrl + R 則繼續往后查找符合條件的命令。

 

history | grep keyword 列出所有符合條件的命令

Ctrl + R 無疑是最方便常用的歷史記錄搜索方式,但是當然也可以用 history | grep keyword 來查找所有的符合條件的記錄,然后再結合剛剛的! 方法完成命令。

 

注意,以上所說的包含 ! 的技巧都是可以與別的命令拼接在一起的, 比如

 

sudo !-3 , time !472, sudo !apt

 

下面是一些關於歷史記錄的參數的技巧:

 

!$ 上一條命令的最后一條參數

如果說你只想用上條命令的參數,一個個打出來又太繁復,就可以這樣

 

cd !$

 

當然這種情形下也有更簡單的方法,等講到快捷鍵部分再說

 

!^ 上一條命令的第一個參數

 

$ 表示最后一個參數,而 ^就表示的是第一個參數

 

!^ 在這樣的一個應用場景里十分方便:你剛備份了一個配置文件,然后想編輯這個配置文件

 

vim !^

 

:n 第n個參數

 

^與$表示第一個參數和最后一個參數,而 :n 就表示第n個參數,比如 !:2就表示上一條命令的第2個參數

 

cd !:2

 

 

注意,參數符號不僅是可以 !$、!^、!:n 這樣用,這些關於參數的符號都是可以和!表達式任意組合使用的,比如

 

  • cd !762:2 (表示762號歷史命令的第2個參數)

  • ls !-3^ (表示倒數第3個命令的第一個參數)

  • dpkg -L !apt$ (表示搜索含apt的命令的最后一個參數)

 

magic-space 讓歷史記錄表達式和參數符號立即顯出原形

 

雖然歷史記錄表達式和參數符號使用起來簡易方便,但是在包含這些表達式和符號的命令回車執行之前,你是並不知道這些表達式和符號到底代表的什么。為了解決這個問題,我們可以使用Magic-Space

 

bind Space:magic-space

 

使用了這個設置后,在bash中輸入歷史記錄表達式和參數符號后,按一下空格,這些表達式和符號就立即變成它們所代表的歷史命令和參數,簡稱magic space。

 

可以把這句放到.bashrc中,讓設置持久生效(Mac是在.bash_profile)。

 

命令前加空格,使之不計入history

 

在命令前加空格,就可以避免改該命令計入history,小伙伴們就可以在不用清空history的前提下干一些壞事了。

 

HISTSIZE=0 不記錄命令

 

如果不想記錄命令,可以設置HISTSIZE=0。如果想恢復,可以在設置HISTSIZE為一個大於零的值(默認為500或者1000)

 

HISTCONTROL=ignoredups 去除重復命令

 

這樣設置后,多次的同樣的命令連續執行就會只記錄一次。

 

歷史記錄篇就暫時介紹到這,下篇快捷鍵篇會介紹更多Bash的技巧。

 

如果你知道更多關於Bash 命令歷史的操作技巧,請在評論區分享給大家。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM