#!/bin/bash
一個CTRL-K垂直制表符的例子
var=$'\x0aBottom Line\x0bTop line\x0a'
直接輸出
echo "$var"
使用col來過濾控制字符
echo "$var" | col
上面的顯示將會不一樣
exit 0</pre></td>
</tr>
CTRL-L |
跳紙,換頁(Formfeed),清屏。
清空終端屏幕。在終端上,這個命令的作用和clear命令一樣。但當這個命令發送到打印機時,Ctrl-L會直接跳到紙張(Paper sheet)的末尾。
</td>
</tr>
|
CTRL-M |
回車(Carriage return)。
</td>
</tr>
|
CTRL-N |
擦除從history緩沖區召回的一行文本(在命令行下)。如果當前輸入是歷史記錄中選擇的時候,這個是從這個歷史記錄開始,每按一次,是更接近的一條命令。
</td>
</tr>
|
CTRL-O |
產生一個新行(在命令行下)。
</td>
</tr>
|
CTRL-P |
從history緩沖區召回上一次的命令(在命令行下)。此快捷鍵召回的順序是由近及遠的召回,即按一次,召回的是前一次的命令,再按一次,是召回上一次之前的命令,這和CTRL-N都是以當前的輸入為起點,但是兩個命令操作剛好相反,CTRL-N是從起點開始由遠及近(如果起點是歷史命令的話)。
</td>
</tr>
|
CTRL-Q |
Resume (XON)。恢復/解凍,這個命令是恢復終端的stdin用的,可參見CTRL-S。
</td>
</tr>
|
CTRL-R |
回溯搜索(Backwards search)history緩沖區內的文本(在命令行下)。注意:按下之后,提示符會變成(reverse-i-search)'':輸入的搜索內容出現在單引號內,同時冒號后面出現最近最匹配的歷史命令。
</td>
</tr>
|
CTRL-S |
Suspend(XOFF),掛起。這個是凍結終端的stdin。要恢復可以按CTRL-Q。
</td>
</tr>
|
CTRL-T |
交換光標位置與光標的前一個位置的字符內容(在命令行下)。比如:echo $var;,假設光標在a上,那么,按下C-T之后,v和a將會交換位置:echo $avr;。
</td>
</tr>
|
CTRL-U |
擦除從光標位置開始到行首的所有字符內容。在某些設置下,CTRL-U會不以光標位置為參考而刪除整行的輸入。
</td>
</tr>
|
CTRL-V |
在輸入文本的時候,按下C-V之后,可以插入控制字符。比如:echo -e ‘\x0a';和echo <CTRL-V><CTRL-J>;這兩種效果一樣。這點功能在文本編輯器內非常有效。
</td>
</tr>
|
CTRL-W |
當在控制臺或一個xterm窗口敲入文本時,CTRL-W 會刪除從在光標處往后(回)的第一個空白符之間的內容。在某些設置里,CTRL-W 刪除光標往后(回)到第一個非文字和數字之間的字符。
</td>
</tr>
|
CTRL-X |
在某些文字處理程序中,這個控制字符將會剪切高亮的文本并且將它復制到剪貼板中。
</td>
</tr>
|
CTRL-Y |
將之前已經清除的文本粘貼回來(主要針對CTRL-U或CTRL-W)。
</td>
</tr>
|
CTRL-Z |
暫停一個前臺的作業;在某些文本處理程序中也作為替換操作;在MSDOS文件系統中作為EOF(End-of-file)字符。
</td>
</tr>
|
CTRL-\ |
退出。和CTRL-C差不多,也可能dump一個"core"文件到你的工作目錄下(這個文件可能對你沒用)。
</td>
</tr>
|
CTRL-/ |
撤消操作,Undo。
</td>
</tr>
|
CTRL-_ |
撤消操作。
</td>
</tr>
|
CTRL-xx |
在行首和光標兩個位置間進行切換,此處是兩個"x"字符。
</td>
</tr>
|
ALT-B |
光標往回跳一個詞,詞以非字母為界(跳動到當前光標所在詞的開頭)。
</td>
</tr>
|
ALT-F |
光標往前跳一個詞(移動到光標所在詞的末尾)。
</td>
</tr>
|
ALT-D |
刪除光標所在位置到光標所在詞的結尾位置的所有內容(如果光標是在詞開頭,則刪除整個詞)。
</td>
</tr>
|
ALT-BASKSPACE |
刪除光標所在位置到詞開頭的所有內容。
</td>
</tr>
|
ALT-C |
將光標所在位置的字母轉為大寫(如果光標在一個詞的起始位置或之前,則詞首字母大寫)。
</td>
</tr>
|
ALT-U |
將光標所在位置到詞尾的所有字母轉為大寫。
</td>
</tr>
|
ALT-L |
將光標位置到詞尾的所有字母轉為小寫。
</td>
</tr>
|
ALT-R |
取消所有變更,并將當前行恢復到在歷史記錄中的原始狀態(前提是當前命令是從歷史記錄中來的,如果是手動輸入,則會清空行)。
</td>
</tr>
|
ALT-T |
當光標兩側都存在詞的時候,交換光標兩側詞的位置。如:abc <ALT-T>bcd -> bcd abc
</td>
</tr>
|
ALT-. |
使用前一次命令的最后一個詞(命令本身也是一個詞,參見后一篇的Bang命令中的詞指示符概念)。
</td>
</tr>
|
ALT-_ |
同ALT-.。 |
</tr>
ALT-數值 |
這個數值可以是正或者是負,這個鍵單獨沒有作用,必須后面再接其他內容,如果后面是字符,則表示重復次數。如:[ALT-10,k]則光標位置會插入10個k字符(負值在這種情況下無效);如果后面接的是命令,則數字會影響后面命令的執行結果,如:[ALT--10,CTRL-D]則向CTRL-D默認方向相反(負數)的方向執行10次操作。
</td>
</tr>
|
ALT-< |
移動到歷史記錄中的第一行命令。
</td>
</tr>
|
ALT-> |
移動到歷史的最后一行,即當前正在輸入的行(沒有輸入的情況下為空)。
</td>
</tr>
|
ALT-P |
從當前行開始向前搜索,有必要則向"上"移動,移動時,使用非增量搜索查找用戶提供的字符串。
</td>
</tr>
|
ALT-N |
從當前行開始向后搜索,如果有必要向"下"移動,移動時,使用非增量搜索查找用戶提供的字符串。
</td>
</tr>
|
ALT-CTRL-Y |
在標志點上插入前一個命令的第一個參數(一般是前一行的第二個詞)。如果有參數n,則插入前一個命令的第n個詞(前一行的詞編號從0開始,見歷史擴展)。負的參數將插入沖前一個命令的結尾開始的第n個詞。參數n通過M-No.的方式傳遞,如:[ALT-0,ALT-CTRL-Y]插入前一個命令的第0個詞(命令本身)。
</td>
</tr>
|
ALT-Y |
輪詢到刪除環,并復制新的頂端文本。只能在yank[CTRL-Y]或者yank-pop[M-Y]之后使用這個命令。
</td>
</tr>
|
ALT-? |
列出能夠補全標志點前的條目。
</td>
</tr>
|
ALT-* |
把能夠補全[ALT-?]命令能生成的所有文本條目插入到標志點前。
</td>
</tr>
|
ALT-/ |
試圖對標志點前的文本進行文件名補全。[CTRL-X,/]把標志點前的文本當成文件名并列出可以補全的條目。
</td>
</tr>
|
ALT-~ |
把標志點前的文本當成用戶名并試圖進行補全。[CTRL-X,~]列出可以作為用戶名補全標志點前的條目。
</td>
</tr>
|
ALT-$ |
把標志點前的文本當成Shell變量并試圖進行補全。[CTRL-X,$]列出可以作為變量補全標志點前的條目。
</td>
</tr>
|
ALT-@ |
把標志點前的文本當成主機名并試圖進行補全。[CTRL-X,@]列出可以作為主機補全標志點前的條目。
</td>
</tr>
|
ALT-! |
把標志點前的文本當成命令名并試圖進行補全。進行命令名補全時會依次使用別名、保留字、Shell函數、shell內部命令,最后是可執行文件名。[CTRL-X,!]把標志點前的文本當成命令名并列出可補全的條目。
</td>
</tr>
|
ALT-TAB |
把標志點前的文本與歷史記錄中的文本進行比較以尋找匹配的并試圖進行補全。
</td>
</tr>
|
ALT-{ |
進行文件名補全,把可以補全的條目列表放在大括號之間,讓shell可以使用。
</td>
</tr>
</tbody>
</table>
在Bash下,如果能夠妥善的使用快捷鍵,在Linux系統的操作會變得非常快捷,比如我們在使用cat創建一個文件時,我們可以使用快捷鍵[CTRL-D]:
## 不用快捷鍵
cat >>/tmp/test<<_EOF
這里是內容
最后我們要在新行里面輸入_EOF
cat見到_EOF才會將內容寫到文件中
使用快捷鍵
cat >>/tmp/test
這里輸入內容
輸入完畢之后,直接[CTRL-D]結束</pre> 有的時候我們需要創建一個文件,而后對這個文件進行操作:
touch /tmp/a-test-file-from-blog.useasp.net
不使用快捷鍵,文件名要重新輸入
chmod u+x /tmp/a-test-file-from-blog.useasp.net
使用快捷鍵
chmod u+x <ALT-.>
快捷鍵[M-.]自動會將上面的最后一個參數附加</pre> 怎么樣,有沒有更有效率?
當然,Bash的快捷鍵只有在不斷的使用中,才能達到真正的高效,在開始連要用那個快捷鍵都要思考半天的情況下,高效是很難的——但磨刀不誤砍材工,前期的投入是值得的。
如果你想自己的Bash有那么一些不同,你也可以自己自定義快捷鍵,使用bind命令即可,Bash中的快捷鍵其實是Readline來提供的,因此,這里快捷鍵的設置其實就是配置Readline,Readline中分兩種快捷鍵,一種是Readline內部的函數快捷鍵,另外一種是執行Shell命令,設置的時候稍有不同:
##查看Readline中可以使用的函數名稱
bind -l
查看當前綁定的案件配置與其對應的功能
bind -v
已經綁定的快捷鍵
bind -p
綁定自定義執行命令shell命令的快捷鍵
bind -x '"\C-x\C-l":ls -al'
綁定后,按[C-x,C-L]就能執行ls -al
綁定內置函數功能
bind "\C-x":backword-delte-char
這個是這行Readline庫中的函數backword-delte-char</pre> 這種設置只是針對當前的會話有效,一旦會話丟失,這樣設置的快捷鍵就會丟失,為了能夠讓設置的快捷鍵永久有效,我們就需要將快捷鍵的配置寫入文件。在Linux系統中,能永久保存快捷鍵的地方有兩個,全局和用戶的配置文件,全局的是/etc/inputrc,而用戶的是在用戶的根目錄下~/.inputrc,全局的會影響所有的用戶,而用戶根目錄下的只會對相應的用戶產生影響。inputrc文件的大概樣子像下面這樣:
## 本例來自CentOS6.4的默認配置文件
$if mode=emacs
for linux console and RH/Debian xterm
"\e[1~": beginning-of-line
"\e[4~": end-of-line
commented out keymappings for pgup/pgdown to reach begin/end of history
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[5~": history-search-backward
"\e[6~": history-search-forward
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word
for rxvt
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
for non RH/Debian xterm, can't hurt for RH/DEbian xterm
"\eOH": beginning-of-line
"\eOF": end-of-line
for freebsd console
"\e[H": beginning-of-line
"\e[F": end-of-line
$endif</pre> 說明:
- 在配置文件中,\C代表CTRL,\M代表ALT,\e代表ESC,\是反斜杠\,\'是單引號,\"是雙引號;
\C- control prefix
\M- meta prefix
\e an escape character
\\ backslash
\" literal ", a double quote
\’ literal ’, a single quote </li>
- 如果要查看某一個功能鍵的字符序列可以通過[CTRL-V]來實現,或者輸入cat后回車,進入編輯中,直接按快捷鍵
- 配置文件中可能會使用八進制或者十六進制來表示字符。
</ol>
如果我們針對常用的操作設置成適當的快捷鍵,也許以前需要巴拉巴拉敲上半天的命令,你一個快捷鍵就能搞定,這無疑將會大大的提高我們的工作效率!快捷鍵吧,騷年!
來源: http://blog.useasp.net/archive/2014/06/03/use-bash-more-efficient-with-shortcuts-for-terminal-or-xtream-window-on-linux.aspx
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
| | | | | |