1. 程式人生 > >Linux系統上的檔案型別及命令歷史的使用

Linux系統上的檔案型別及命令歷史的使用

Linux系統上的檔案型別:

   -: 常規檔案:及f:

   d; directory, 目錄檔案:

   b: block device, 塊裝置檔案,支援已“block”為單位進行隨機訪問

   c: character device 字元裝置檔案支援以“character”為單位進行線性訪問

         Major  number:主裝置號,用於標識裝置型別,進而確定要載入的驅動程式

         Minor  number:次裝置號,用於標識同一型別中的不同的裝置

             8位二進位制:0-255

   l: symbolic  link ,符號連結檔案

   p: pipe 命名管道

   s: socket 套接字檔案

最基本的檢視歷史命令 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 去除重複命令

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