在Linux下,Bash的地位无可忽略,日常中涉及到Linux下的管理与操作基本都是在Bash中进行,为此,为了提升Linux下工作效率,自然而然的就弄成了怎样高效使用Bash的问题。使用Bash上的一些快捷键是提升效率的最简单也是最直接方法。本文正是奔着这个目标来的!
快捷键的一些说明:
CTRL=C:这个键是指PC鼠标上的Ctrl键ALT=M:这个键是PC鼠标上的ALT键,假如你按键上没有这个键,可以尝试使用ESC键取代SHIFT=S:此键是PC上的Shift键ESC=E:这个键是PC鼠标上的ESC键,此键通常在鼠标的左上角BACKSPACE=DEL:此键是是PC鼠标上的Backspace键,通常坐落主按键区的右上角文中”[]“括住的为快捷键内容,”-”两边的内容是按住一侧键,再按左侧键获得,”,”逗号两侧的内容是先按右边键,握住后再按左侧键。如:[CTRL-v]是表示按下Ctrl键然后linux数据恢复,不要抬起,再按下v键。默认的情况下,快捷键的组成格式是:-[SHIFT-]。即由Ctrl、Alt、Esc之一开头,中划线,Shift,中划线,和一个字符组成。其中,中括弧内的Shift和”-”有时可省略。默认情况下,快捷键只有最后一个为字符,其他的通配符均为功能键出现[CTRL-?]这类快捷键,因为”?”是须要使用Shift键盘就能获得的字符,因而这种快捷键默认使用的是[CTRL-SHIFT-?]
要注意,在Bash上面,快捷键可能会被写成八补码或则十六补码的方式(跟在通配符符前面);脚本文件中的快捷键并不是总能起作用的。另外快捷键有个规律,Ctrl开头的快捷键通常是针对字符的,而Alt开头的快捷键通常是针对词的。
Bash下,假如使用的是shell脚本文件,快捷键不一定是一样的,有的时侯会出现同一个快捷键有不同的表现,这些情况通常是因为Bash所处的模式不同而导致的,你可以通过set命令来调整模式:
set -o emacs ##切到emacs模式 set -o vi ##切到vi模式 set -o ## 查看当前选项的设置状态
这个是Bash的option选项,你可以按照具体情况进行设置,本文使用的是emacs模式。
快捷键快捷键说明
CTRL-A
将光标移到行首(在命令行下)
CTRL-B
退格(非破坏性的),这个只是将光标位置往前联通一个位置。
CTRL-C
中断,终结一个前台作业。
CTRL-D
“EOF”(文件结尾:endoffile)。它用于表示标准输入(stdin)的结束。在控制台或xterm窗口输入文本时,CTRL-D删掉在光标下的字符。
从一个shell中退出(类似于exit)。假如没有字符存在,CTRL-D则会登载该会话。在一个xterm窗口中,则会形成关掉此窗口的疗效。
CTRL-E
将光标联通到行尾(在命令行下)
CTRL-F
将光标往前联通一个字符(在命令行下)
CTRL-G
BEL。在一些旧式复印机终端上,这会引起一个响铃。在xterm终端上可能是哔的一声。
CTRL-H
擦除(Rubout)(破坏性的退格)。在光标往前联通的时侯,同时擦除光标前的一个字符。
CTRL-I
水平制表符。
CTRL-J
新行(换行[linefeed]并到行首)。在脚本中,也可能表示为八补码方式(‘/012′)或十六补码方式(‘/x0a’)。
CTRL-K
垂直制表符(Verticaltab)。在控制台或xterm窗口输入文本时,CTRL-K会删掉从光标所在处到行尾的所有字符。
在脚本中,也可能表示为八补码方式(‘/013′)或十六补码方式(‘/x0b’)。在脚本中,CTRL-K可能会有不一样的行为linux启动命令行快捷键,下边的事例给出其不一样的行为:
#!/bin/bash ## 一个CTRL-K垂直制表符的例子 var=$'/x0aBottom Line/x0bTop line/x0a' ## 直接输出 echo "$var" ## 使用col来过滤控制字符 echo "$var" | col ## 上面的显示将会不一样 exit 0
CTRL-L
跳纸,换页(Formfeed),清屏。
清空终端屏幕。在终端上,这个命令的作用和clear命令一样。但当这个命令发送到复印机时,Ctrl-L会直接跳到纸张(Papersheet)的末尾。
CTRL-M
回车(Carriagereturn)。
CTRL-N
擦除从history缓冲区召回的一行文本(在命令行下)。假如当前输入是历史记录中选择的时侯,这个是从这个历史记录开始,每按一次,是更接近的一条命令。
CTRL-O
形成一个新行(在命令行下)。
CTRL-P
从history缓冲区召回上一次的命令(在命令行下)。此快捷键召回的次序是由近及远的召回,即按一次linux启动命令行快捷键,召回的是前一次的命令,再按一次,是召回上一次之前的命令,这和CTRL-N都是以当前的输入为起点,并且两个命令操作正好相反,CTRL-N是从起点开始由远及近(假如起点是历史命令的话)。
CTRL-Q
Resume(XON)。恢复/解冻,这个命令是恢复终端的stdin用的,可参见CTRL-S。
CTRL-R
回溯搜索(Backwardssearch)history缓冲区内的文本(在命令行下)。注意:按下以后,提示符会弄成(reverse-i-search)”:输入的搜索内容出现在单冒号内,同时引号前面出现近来最匹配的历史命令。
CTRL-S
Suspend(XOFF),挂起。这个是冻结终端的stdin。要恢复可以按CTRL-Q。
CTRL-T
交换光标位置与光标的前一个位置的字符内容(在命令行下)。诸如:echo$var;,假定光标在a上,这么,按下C-T以后,v和a将会交换位置:echo$avr;。
CTRL-U
擦除从光标位置开始到行首的所有字符内容。在个别设置下linux虚拟机,CTRL-U会不以光标位置为参考而删掉整行的输入。
CTRL-V
在输入文本的时侯,按下C-V以后,可以插入控制字符。诸如:echo-e'/x0a’;和echo;这两种疗效一样。这点功能在文本编辑器内十分有效。
CTRL-W
当在控制台或一个xterm窗口敲入文本时,CTRL-W会删掉从在光标处往前(回)的第一个空白符之间的内容。在个别设置里,CTRL-W删掉光标往前(回)到第一个非文字和数字之间的字符。
CTRL-X
在个别文字处理程序中,这个控制字符将会剪切高亮的文本而且将它复制到剪贴板中。
CTRL-Y
将之前早已清理的文本粘贴回去(主要针对CTRL-U或CTRL-W)。
CTRL-Z
暂停一个前台的作业;在个别文本处理程序中也作为替换操作;在MSDOS文件系统中作为EOF(End-of-file)字符。
CTRL-/
退出。和CTRL-C差不多,也可能dump一个”core”文件到你的工作目录下(这个文件可能对你没用)。
CTRL-/
撤销操作,Undo。
CTRL-_
撤销操作。
CTRL-xx
在行首和光标两个位置间进行切换,此处是两个”x”字符。
ALT-B
光标往前跳一个词,词以非字母为界(跳动到当前光标所在词的开头)。
ALT-F
光标向前跳一个词(联通到光标所在词的末尾)。
ALT-D
删掉光标所在位置到光标所在词的结尾位置的所有内容(假如光标是在词开头,则删掉整个词)。
ALT-BASKSPACE
删掉光标所在位置到词开头的所有内容。
ALT-C
将光标所在位置的字母转为小写(假如光标在一个词的起始位置或之前,则词首字母小写)。
ALT-U
将光标所在位置到辅音的所有字母转为小写。
ALT-L
将光标位置到辅音的所有字母转为大写。
ALT-R
取消所有变更,并将当前行恢复到在历史记录中的原始状态(前提是当前命令是从历史记录中来的,假如是自动输入,则会清空行)。
ALT-T
当光标两边都存在词的时侯,交换光标两边词的位置。如:abcbcd->bcdabc
ALT-.
使用前一次命令的最后一个词(命令本身也是一个词,参见后一篇的Bang命令中的词指示符概念)。
ALT-_
同ALT-.。
ALT-数值
这个数值可以是正或则是负,这个键单独没有作用,必须前面再接其他内容,假如前面是字符,则表示重复次数。如:[ALT-10,k]则光标位置会插入10个k字符(负值在这些情况下无效);假如前面接的是命令,则数字会影响前面命令的执行结果,如:[ALT--10,CTRL-D]则向CTRL-D默认方向相反(正数)的方向执行10次操作。
ALT-<
联通到历史记录中的第一行命令。
ALT->
联通到历史的最后一行,即当前正在输入的行(没有输入的情况下为空)。
ALT-P
从当前行开始往前搜索,有必要则向”上”移动,联通时,使用非增量搜索查找用户提供的字符串。
ALT-N
从当前行开始向后搜索,假如有必要向”下”移动,联通时,使用非增量搜索查找用户提供的字符串。
ALT-CTRL-Y
在标志点上插入前一个命令的第一个参数(通常是前一行的第二个词)。假如有参数n,则插入前一个命令的第n个词(前一行的词编号从0开始,见历史扩充)。负的参数将插入冲前一个命令的结尾开始的第n个词。参数n通过M-No.的形式传递,如:[ALT-0,ALT-CTRL-Y]插入前一个命令的第0个词(命令本身)。
ALT-Y
协程到删掉环,并复制新的顶端文本。只能在yank[CTRL-Y]或则yank-pop[M-Y]然后使用这个命令。
ALT-?
列举才能补全标志点前的条目。
ALT-*
把才能补全[ALT-?]命令能生成的所有文本条目插入到标志点前。
ALT-/
企图对标志点前的文本进行文件名补全。[CTRL-X,/]把标志点前的文本当作文件名并列举可以补全的条目。
ALT-~
把标志点前的文本当作用户名并企图进行补全。[CTRL-X,~]列举可以作为用户名补全标志点前的条目。
ALT-$
把标志点前的文本当作Shell变量并企图进行补全。[CTRL-X,$]列举可以作为变量补全标志点前的条目。
ALT-@
把标志点前的文本当作主机名并企图进行补全。[CTRL-X,@]列举可以作为主机补全标志点前的条目。
ALT-!
把标志点前的文本当作命令名并企图进行补全。进行命令名补全时会依次使用别称、保留字、Shell函数、shell内部命令,最后是可执行文件名。[CTRL-X,!]把标志点前的文本当作命令名并列举可补全的条目。
ALT-TAB
把标志点前的文本与历史记录中的文本进行比较以找寻匹配的并企图进行补全。
ALT-{
进行文件名补全,把可以补全的条目列表置于大括弧之间,让shell可以使用。
在Bash下,假如才能妥善的使用快捷键,在Linux系统的操作会显得十分快捷,例如我们在使用cat创建一个文件时,我们可以使用快捷键[CTRL-D]:
## 不用快捷键 cat >>/tmp/test<>/tmp/test ##这里输入内容 ##输入完毕之后,直接[CTRL-D]结束
有的时侯我们须要创建一个文件,而后对这个文件进行操作:
touch /tmp/a-test-file-from-blog.useasp.net ## 不使用快捷键,文件名要重新输入 chmod u+x /tmp/a-test-file-from-blog.useasp.net ##使用快捷键 chmod u+x ## 快捷键[M-.]自动会将上面的最后一个参数附加
如何样,有没有更有效率?
其实,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
这些设置只是针对当前的会话有效,一旦会话遗失,这样设置的快捷键都会遗失,为了才能让设置的快捷键永久有效,我们就须要将快捷键的配置写入文件。在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
说明:
在配置文件中,/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
假如要查看某一个功能键的字符序列可以通过[CTRL-V]来实现,或则输入cat后回车,步入编辑中,直接按快捷键配置文件中可能会使用八补码或则十六补码来表示字符。
假如我们针对常用的操作设置成适当的快捷键,其实曾经须要巴拉巴拉敲上半天的命令,你一个快捷键才能搞定,这无疑将会大大的提升我们的工作效率!快捷键吧,妹纸!