ZT - 對話 UNIX: UNIX 高手的重大秘密(4)
使用歷史記錄重寫
如果您經常在 shell 提示符中花費大量時間,儲存 shell 歷史記錄可以節約時間和輸入。但是如果歷史記錄不能被修改,就會導致一些麻煩:記錄重複的命令,且多個 shell 例項可能會干擾各自的歷史記錄。這兩個問題很容易解決,只需在您的 .bashrc 中新增兩行:
export HISTCONTROL=ignoreboth
shopt -s histappend
第一行將移除您的 shell 歷史記錄中連續的重複命令。如果您想移除所有零散的副本,可將 ignoreboth 更改為 erasedups。第二行在 shell 退出時將 shell 的歷史記錄附加到您的記錄檔案。預設情況下,Bash 記錄檔案命名為 ~/~/.bash_history (不錯,這是一個點檔案)。可以透過設定 HISTFILE(不錯,這是一個環境變數)來更改它的位置。如果您想將一個 shell 的最近 10,000 命令儲存在一個包含 100,000 條目的記錄檔案中,將 export HISTSIZE=10000 HISTFILESIZE=100000 新增到您的 shell 啟動檔案中。要檢視一個 shell 的歷史記錄,在任意提示處鍵入 history 即可。
如果不能呼叫,那麼儲存的命令歷史記錄就用處不大。而這正是 shell !(或 bang)運算子的作用所在:
!! ("bang bang") 完整地重複最後一條命令。
!:0 是前一條命令的名稱。
!^ 是前一條命令的第一個引數。!:2、!:3 ... !$ 等命令是前一條命令的第二、第三......以及最後一個引數。
!* 是最後一條命令的所有引數,命令名除外。
!n 重複歷史中編號為 n 的命令。
!handle 重複以 handle 中的字元開始的最後一條命令。例如,!ca 將重複以字元 ca 開始的最後一條命令,如 cat README。
!?handle 重複包含 handle 中的字元組成的字串的最後一條命令。例如,!?READ 還會匹配 cat README。
^original^substitution 使用 substitution 替換 original 的第一個 例項。例如,如果前一條命令是 cat README,,命令 ^README^license.txt 將生成一條新命令 cat license.txt。
!:gs/original/substitution 將使用 substitution 替換 original 的所有 例項(!:gs 表示 “全域性替換[global substitution]”)。
!-2 是倒數第二條命令,!-3 是倒數第三條命令,以此類推。
您甚至可以合併歷史表示式來生成 !-2:0 -R !^ !-3:2 這樣的 “魔湯”,該命令將擴充套件為倒數第二條命令的名稱,加上 -R,再加上前一條命令的第一個引數,以及倒數第三條命令的第二個引數。要使這樣的神秘命令更具可讀性,可以在鍵入時擴充套件歷史參考。在任意提示符鍵入命令 bind Space:magic-space ,或者將其新增到一個啟動檔案,從而將空格鍵繫結到函式 magic-space,該函式將擴充套件內聯歷史替換。[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16896827/viewspace-1036455/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ZT - 對話 UNIX: UNIX 高手的重大秘密(6)
- ZT - 對話 UNIX: UNIX 高手的重大秘密(5)
- ZT - 對話 UNIX: UNIX 高手的重大秘密(3)
- ZT - 對話 UNIX: UNIX 高手的重大秘密(2)
- ZT - 對話 UNIX: UNIX 高手的重大秘密(1)
- UNIX 技巧: UNIX 高手的另外 10 個習慣
- UNIX 高手的 10 個習慣
- Unix 高手的另外 10 個習慣
- dos2unix, unix2dos 對應的命令(轉)
- ZT - UNIX 網路協議的深度分析(5)協議
- ZT - UNIX 網路協議的深度分析(3)協議
- ZT - UNIX 網路協議的深度分析(2)協議
- ZT - UNIX 網路協議的深度分析(1)協議
- Unix 高階使用者命令 lsof 和 fuser (zt)
- UNIX的架構及UNIX/Windows演進圖架構Windows
- ICAClient for UNIXclient
- Unix哲學(Unix程式設計藝術)程式設計
- Unix程式設計藝術,Unix哲學程式設計
- unix的儲存概念
- Unix pthreadthread
- Overview of Unix ResourcesView
- UNIX VI命令
- 常用UNIX命令
- unix命令1
- 各類unix和linux密碼丟失解決方法(zt)Linux密碼
- 4 種繞過 Linux/Unix 命令別名的方法Linux
- 《Unix 網路程式設計》15:Unix 域協議程式設計協議
- 各種unix/linux平臺下iostat與vmstst說明ztLinuxiOS
- 閱讀原始碼---與高手對話原始碼
- 在SCO UNIX系統中使用另一unix硬碟(轉)硬碟
- 關於UNIX及類UNIX下壓縮和解壓的命令簡介
- unix中dmesg的應用
- 獻給UNIX的初學者
- hp unix cluster使用的命令
- Unix原則-KISS
- UNIX基本命令
- unix date命令解疑
- unix at命令詳解