1.4.4 快捷键 – Linux就是这个范儿

有位童鞋正在Linux系统上开发一个中文相似度匹配的项目,工作相当努力,已经达到了废寝忘食的地步,但是使用的TF-IDF[⑤]算法的计算速度还是不尽人意。这时候,他决定先停一停,换换思路,玩玩俄罗斯方块放松一下。突然老板走过来,他下意识地使用<Ctrl><Alt><d>快速隐藏桌面。还好有惊无险,没有被老板发觉在玩游戏,否则又需要一大堆的解释。老板拍了拍他的肩膀走了过去,随后他用<Ctrl><Alt><d>又恢复了原有功能的显示。

举这个好玩的例子可不是让你照着做,而是为了告诉你Linux系统提供了很多快捷键提高命令行使用的工作效率,减少键盘的敲打以及拼写错误。说几个比较实用的快捷键,见表1-2所示,其他的你自己去挖掘。

表 1-2

常用快捷键

说  明

<Tab>

在文本终端下,使用TAB自动完成命令的输入,或者显示所有的可选项。超好用!

<Shift><PgUp>

滚动文本终端输出。终端屏幕上一屏又一屏的提示信息,就可以用它向上翻滚查看这些信息

<Shift><PgDn>

回滚文本终端输出

<Ctrl><Alt><Delete>

文本终端下关机和重新启动

<Ctrl><Alt><Backspace>

关闭或重启X Window

<Ctrl>a

到正在输入的命令行的首部

<Ctrl>e

到正在输入的命令行的尾部

<Ctrl>c

终止当前进程

<Ctrl>s

停止终端传输

<Ctrl>p

上一条执行的命令

<Ctrl>n

下一条执行的命令,前提是执行过<Ctrl>p

<Ctrl>f

在当前命令输入中右移光标一个字符

<Ctrl>b

在当前命令输入中左移光标一个字符

<Alt>f

在当前命令输入中右移光标一个词

<Alt>b

在当前命令输入中左移光标一个词

<Ctrl>k

删除光标后的所有字符

<Ctrl>d

删除光标当前的字符

<Alt><Tab>

切换不同的程序窗口

<Alt><F1>

访问“开始”菜单

<Alt><鼠标左键>

拖曳并移动一个窗口

<Alt><PrintScreen>

把当前屏幕的快照存到剪贴板

<Ctrl><Alt><d>

哈哈,老板键。切换隐藏/显示桌面运行程序

 

使用快捷键太爽了!默认情况下,按TAB在bash中是可以自动补齐,但仅能自动补齐命令名和文件名。可是我们追求的目标是“更快、更高、更强”,那就安装bash-completion做个增强版的自动补齐吧。使用TAB键自动补齐几乎任何内容,包括参数、文件、目录甚至包名称等。安装方法很简单,下载到的包中包含一个bash-completion文件,将其放在/etc下。在/etc/bash.bashrc文件里加入可执行命令(这个操作需要root权限)。

	# Run bash completion code

	if [ -r /etc/bash_completion ]; then
	    # Source completion code.
	    . /etc/bash_completion
	fi

1.    更快……

举个例子。淘宝的预发环境中的Linux机器不允许直接登录。需要申请跳板机,通过跳板机才能登录预发机。在跳板机上,我们经常使用ssh 10.232.15.201操作命令,好麻烦呀。在/etc/hosts中我们加入一行“10.232.15.201 prerelease”。

然后我们使用complete -F _known_hosts ssh告诉ssh需要的主机名。一旦设置好了,我就可以通过敲[TAB]键完成主机名的输入:ssh p[TAB]。

另外你还可以定制私有命令的补齐功能,不过你需要自己编写shell脚本实现,然后把这个脚本放在/etc/bash_completion.d/下。在随后的章节,我们会学习shell脚本的编程。在学完之后,希望你会通过编写脚本产生自己的补齐功能。

2.    更高……

有的命令太长,那就把命令缩短。命令别名(alias)就起到这个作用。例如在SUSE版本中有个命令别名的文件(/etc/profile.d/alias.bash)。它里面定义了许多命令别名,例如alias ..='cd ..', 那么在终端上输入“..”就相当于输入了“cd ..”直接回到上级目录,方便不?

3.    更强……

在shell终端上还可以一下子运行多个命令,只需要用分号“;”把各个命令串起来就行:

[命令1];[命令2];[命令3]

不管执行的命令结果如何,就是勇往直前地冲呀杀呀,把这些命令最终执行掉。但是有时候,这些命令之间是有关联的,就需要改改这种傻愣愣的工作方式。我们可以用“&&”把命令连接起来,只有前一个命令执行成功才执行下一个命令:

[命令1]&&[命令2]&&[命令3]

如果需要等前一个命令执行失败才执行下一个命令,则要使用“||”把命令连接起来:

[命令1]||[命令2]||[命令3]

哎,使用命令行的技巧还真不少,我们可以考虑出版一本专门讲述Linux命令行的参考书了:)

Linux就是这个范儿 – 本书目录 


[⑤] TF-IDF(term frequency-inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF-IDF是一种统计方法,用以评估一个字词对于文件集或语料库中的一份文件的重要程度。

Comments