由於自己平時使用Ubuntu作爲開發環境,所以使用bash的機會就比較多一點兒,在此將使用bash過程中的一些比較有用的技巧記錄在此,方便自己以後查詢,希望也能幫到一些網友,更有效率的使用的bash.
1.快捷鍵
使用快捷鍵在很多時候可以顯著提高自己操作的效率,而我個人平時比較多的使用快捷鍵(也只是使用了一小部分),所以先說一下快捷鍵。我個人使用的是gnome-terminal,默認設置是emacs模式,所以好多的快捷鍵應該是跟emacs相同的。同時,爲了能夠使用Alt開頭的快捷鍵,我對gnome-terminal進行了如下設置:點擊 編輯 -> 鍵盤快捷鍵, 把"啓用菜單快捷鍵"前面的勾去掉.先說一下我使用最多的快捷鍵(一些大家熟知的ctrl+c/ctrl+z等等,此處就不說了),最後羅列一下快捷鍵列表。
Ctrl+Alt+T:打開終端,不多說。
Ctrl+Shift+T:在當前路徑下,打開另外一個terminal標籤(相當於clone了一個當前terminal標籤)。非常適合需要打開另外一個終端,並跳轉到當前處理的路徑的情況。
Ctrl+R:逆向搜索歷史命令。按下ctrl+R後,直接想要運行的之前的命令中包含的單詞,如果不是你要的那一條,可以持續按下Ctrl+R直到找到需要的命令,同時也可以按下Ctrl+G來取消搜索。示例:(reverse-i-search)`ls':ls a b c
Alt+.:輸入之前命令的最後一個參數。按下Alt+. 以後,會在當前光標位置補上上一條命令的最後一個參數,如果持續按Alt+.則會補全上條命令的最後一個參數、上上上條......。例如:
$mkdir name-too-long-directory
$cd |
當光標在如上的|位置時,我們按下Alt+. 則會補全爲cd name-too-long-directory
Ctrl+L:清屏命令。比clear命令更好用。即使當前光標處已經輸入了命令,按下ctrl+L也可以完成清屏(輸入的命令繼續保留)
Ctrl+A/Ctrl+E:移動到行首、行尾。使用該命令可以將光標置於當前輸入的命令的行首或者行尾。
Ctrl+F/Ctrl+B:光標向前、向後移動一個字符。(F/B分別爲Forward/Backward)
Alt+F/Alt+B:光標向前、向後移動一個單詞。
Ctrl+U/Ctrl+K:刪除當前光標到行首/當前光標到行尾的字符。
Ctrl+W:刪除一個單詞,單詞之間以空格分隔
Ctrl+Alt+H:刪除一個單詞,單詞之間以符號分割,此處的符號是指除了字母和數字的其他符號。
Ctrl+Y:粘貼最後一次使用快捷鍵刪除(例如ctrl+u或者ctrl+k等)的內容。
其他常用的快捷鍵列表如下:(其中開頭的C代表Ctrl鍵,開頭的M代表Alt鍵)
意義 |
快捷鍵 |
向前(Forward)移動一個字符 |
C-f |
向後(Backward)移動一個字符 |
C-b |
向前移動一個單詞 |
M-f |
向後移動一個單詞 |
M-b |
移動光標到行首 |
C-a |
移動光標到行尾 |
C-e |
|
|
向前刪一個字符 |
C-d |
向後刪一個字符 |
C-h |
向前刪一個單詞 |
M-d |
向後刪一個單詞, 單詞之間以符號分割 |
C-M-h |
向後刪一個單詞, 單詞之間以空格分割 |
C-w |
清屏, 相當於命令clear, 有了這個快捷鍵, 就不用每次努力的敲clear了 |
C-l |
刪除當前光標到行尾的字符 |
C-k |
刪除當前光標到行首的字符 |
C-u |
粘貼刪除環裏面的第一項 |
C-y |
粘貼刪除環裏面的後面的項 |
M-y |
undo |
C-/ |
取出上一條命令的最後一個參數 |
M-. |
|
|
從當前光標處向前搜索字符 |
C-] |
從當前光標處向後搜索字符 |
C-M-] |
交換當前光標下的字符和光標前面的一個字符, 交換後, 光標向後移東一個字符 |
C-t |
交換當前光標所在單詞和光標前面一個單詞, 交換後, 光標向後移動一個單詞 |
M-t |
把單詞首字符變成大寫, 其他變成小寫 |
M-c |
把單詞變成小寫 |
M-l |
把單詞變成大寫 |
M-u |
刪除當前光標前面所有的空白字符 |
M-\ |
向後非增量搜索歷史命令 |
M-p |
相當於TAB健 |
C-i |
相當於回車鍵 |
C-m/C-j |
在當前光標處和上一次光標處不停的移動 |
C-x C-x |
2.alias別名
alias cd..='cd ../'
alias ..='cd ../'
alias ...='cd ../../'
alias ....='cd ../../../'
alias .....='cd ../../../../
alias ......='cd ../../../../../'
alias .1='cd ../'
alias .2='cd ../../'
alias .3='cd ../../../'
alias .4='cd ../../../../'
alias .5='cd ../../../../../'
3.環境變量
一些環境變量的設置,也能夠爲我們高效使用bash提供很好的幫助。目前我使用的環境變量還不多,等看完man bash以後可能還會添加。主要使用的有:CDPATH:該變量設置cd時,搜索的目錄。此處我們可以將我們常用的目錄加入進去,這樣cd的時候,就會比較快速。例如:
export CDPATH=".:$HOME/source",注意使用":"分隔不同的目錄。假設我的source目錄下有如下目錄:gb ics jb
那麼我在任意的路徑下,只要執行cd gb(假設沒有其他重名目錄的話)就會跳到$HOME/source/gb目錄
與History相關的環境變量,摘自 懶惰的程序員:http://www.wanglianghome.org/blog/2007/05/bash-history.html .大家可以移步查看完整版介紹。
# 忽略重複的命令 export HISTCONTROL=ignoredups # 忽略由冒號分割的這些命令 export HISTIGNORE="[ ]*:&:bg:fg:exit" # 設置保存歷史命令的文件大小 export HISTFILESIZE=1000000000 # 保存歷史命令條數 export HISTSIZE=1000000
shopt -s histappend #append instead of overwrite
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
OK 今天先到這兒,第一次寫,基本上是想到哪兒寫到哪兒。後面抽空整理下,再繼續後面的部分。