当前位置:Linux教程 - Linux - Linux 命令好帮手 Bash

Linux 命令好帮手 Bash

  Bash(Bourne Again Shell)是大多数Linux发行版本中的缺省Shell。它包含了许多其它优秀Shell的良好特性,在此仅介绍它的一些常用操作方法。这些操作方法简单易学,相信读者能够很快地学会并喜欢上它们。

  命令补齐

  当输入了命令名的前几个字母后,按下Tab键,则Bash会尝试着补齐该命令剩下的几个字母。例如,我们想要输入命令“Xconfigurator”,先输入“Xcon”,然后按下Tab键,则Bash将会把剩下“figurator”自动补上。可见,命令补齐功能具有效率高、不易出错的特点。

  有时,输入的前几个字母太少,包含前面这几个字母的命令有多个。此时,按下Tab键,则机器的蜂鸣器会发出警告声,再次按下Tab键时Bash会列出可能的命令,此时用户可以补充输入几个字母,然后再次按下Tab键。当Bash能够唯一确定用户想要的是哪个命令时就可以将该命令补齐了。

  在命令行输入过程中,当想要输入的是文件名或目录名时,自动补齐功能也同样适用,且用法与命令名补齐相同。建议在命令行的输入过程中经常按一下Tab键,只要多用几次你就会喜欢上这个非常有用的功能,简单吧!

  命令行编辑

  用户在命令行上输入字符的过程中,只要是在按Enter键之前,就可以对所输入的内容进行一些编辑和修改。也就是说,可以利用箭头在当前命令行上移动,删除或插入所需的字符。完成后,不论光标处于哪个位置,只要按Enter键就可以执行该命令了。

  Bash为用户提供了几个重要的快捷键,可以提高编辑的速度:

  * Backspace 删除当前光标左边的字符;

  * Ctrl+a 光标跳到行头;

  * Ctrl+e 光标跳到行尾;

  * Ctrl+d 删除光标所在处的字符;

  * Ctrl+k 删除当前光标所在处到行末的字符;

  * Ctrl+l 清屏并把当前命令作为屏幕上第一条命令显示。


  命令历史记录


  当用户输入命令后按下Enter键,那么刚才输入的命令就被加入到命令历史记录中,用户可以通过按向上或向下箭头访问命令历史记录。如果某个命令输入错了而未被正常执行,则也会把按Enter键时命令行上的内容加入到命令历史记录中。这样可以很方便地将其调出来,经过修改后再让其执行。命令历史记录的另一个作用是为多次执行重复的命令提供了方便。

  访问历史表命令的一个快捷方法是用!符号。输入!号和历史表中命令的第一个字符,就可以执行最近一条以该字母开头的命令。

  例如,如果前面用过命令

  #find / -name *.doc -print

  而要再次执行这个命令,可以用

  #!find

  只要使用“find / -name *.doc -print”之后没有使用其它以find开头的命令,则可以执行这个命令。利用!find,执行历史表中最近一条以字符串find开头的命令。

  其中最有趣的是Ctrl+r,它可以动态地、交互式地在历史表中逆向搜索。输入命令时,Bash显示匹配所输入内容的最近一条命令。输入越多,匹配越接近。

  假设要执行已经用过的复杂find命令,可以用Ctrl+R在历史表中逆向搜索。这时,Bash会显示交互式搜索提示:

  (reverse-i-search):

  在冒号后面输入字母时,Bash显示匹配所输入内容的最近一条命令。例如,输入时可能显示:

  (reverse-i-search)f:file inittab

  继续输入到fi时可能显示

  (reverse—i—search)fi:file inittab

  而最后输入到fin时则显示

  (reverse-i-search)fin:find / -name *.txt -print

  这正是所需的命令。这时,按Enter键就可以执行这个命令了。


  选取和粘贴文本


  Bash允许用户选取屏幕任何地方上的文本,然后将其粘贴到命令行中。具体的方法是,将鼠标放到所选文本的开始处并按下鼠标左键,按住鼠标左键的同时拖动鼠标到所选取文本的结束处,松开鼠标左键,这样就选定了一段文本。

  当想要将选取的文本粘贴到命令行的光标所在处时,只要按一下鼠标右键(或中间键)即可。


  管道与输入、输出重定向


  可以使用管道(|)将多个命令连接起来,把前一个命令的输出作为后一个命令的输入。例如,在命令

  #ls -l -a | more

  中,前一个命令“ls -l -a”的输出不再是显示到标准输出设备(屏幕终端),而是被重定向为后一个命令“more”的标准输入。

  Bash中还可以利用重定向符号“〈”和“〉”重定向标准输入和输出。例如,使用命令

  #ls -l -a 〉 f1

  则可以将命令“ls -l -a”的输出保存到文件“f1”中。在执行该重定向命令前,若文件f1不存在则会创建该文件,若文件f1已经存在则会覆盖原先的文件。有时,在使用该重定向功能时,我们希望将一个命令的执行结果追加到已有的文件之后,而不是将原先的文件覆盖,这时可以使用非破坏性的追加重定向操作符“〉〉”。例如,可以使用命令

  #ls -l -a 〉〉 f1

  同样,可以用符号“〈”把文件内容作为标准输入。


  命令替换


  命令替换类似于管道命令,但不同之处在于,管道中一个命令的标准输出被重定向到另一命令的标准输入,而命令替换中一个命令的标准输出变成另一命令的变元或参数。它的语法格式可以表示为

  #command1 ``command2``

  注:所使用的是向后的单引号(``,也称为重音号)。

  下面,我们来看一个例子。假设要压缩所有扩展名为 .txt的文件,可以用命令:

  #gzip ``find / -name *.txt -print``

  其中,命令“find / -name *.txt -print”的作用是得到所有这些文件的清单。