如果你曾在Linux shell命令提示符中输入过命令,那么你很可能也使用过bash。因为,它是大多数现代GNU/Linux发行版的默认shell。
Bash shell是Linux操作系统的主要接口,它可接受、解释和执行你输入的命令,向用户提供shell脚本和自动任务执行后的输出结果。
Bash保守的外表隐藏了很多十分有用的工具和快捷操作。如果你是一位经常使用命令行的用户,那么了解这些工具和捷径可以让你节省很多输入。本文为大家介绍了10种十分有用的捷径。
- 轻松找回以前输入的命令
Bash在一个历史缓冲区中记录已经执行的命令,并允许用户利用向上和向下方向键在历史命令中循环召回以前输入的命令。
键入命令的前几个字母然后按下组合键Ctrl-R,bash将会扫描历史命令来匹配输入的命令并将它们显示在控制台上。这样可以“快速搜索”以前执行的命令。重复键入组合键Ctrl-R可以循环整个匹配命令列表。
- 使用命令别名
如果你经常需要运行一个拥有相同参数选项的命令,你可以用bash为该命令建立一个别名。
别名可以将需要的选项组合在一起,因此不需要用户记住所有参数或每次都要手工输入它们。例如,如果你经常需要运行带有参数-l的ls命令来获得一个 详细的目录列表,你可以使用下面的命令:bash>alias ls='ls –l'
来创建一个自动包含 -l 参数的别名。
建立别名后,在bash的命令提示符下输入ls就会调用别名并产生 ls –l 的输出。
还可以调用alias建立一个没有任何参数的可用别名列表。同时,还可以使用unalias删除一个别名。
- 使用文件名自动完成功能
Bash支持命令行提示符下的文件名自动完成功能。为了使用这个特性,我们首先输入文件名的前几个字母,然后后面跟着按下Tab键。Bash将会扫 描当前目录以及搜索路径中的所有其它目录来查找匹配的文件。如果只搜索到一个匹配,bash将会自动完成文件名。如果有多个匹配,将会提示你选择其中的一 个。
- 利用快捷键高效编辑命令行
Bash支持大量键盘快捷操作进行命令行导航和编辑。快捷键Ctrl-A可将光标移动到命令行行首,而Ctrl-E可将光标移动到命令行行尾。Ctrl-W快捷键可以快速删除光标前的字符,而Ctrl-K可以立即删除光标后的字符。使用Ctrl-Y取消删除操作。
- 获得新邮件自动通知
我们可以配置bash当有新邮件时可以自动通知用户。通过设置$MAILPATH变量来指向你的本地邮件池。例如,下面的命令:
1 | bash> MAILPATH='/var/spool/mail/john' |
该命令在每次有新的消息添加到john的邮件池时,可以使bash在john的控制台上输出一个通知。
- 在后台运行任务
Bash运行在后台运行一个或多个任务,并可有选择地挂起或恢复任何一个当前任务(或“作业”)。为了在后台运行一个任务,需要在命令的末尾添加一 个连接符(&)。下面是一个例子:
1 | bash> tail -f /var/log/messages & |
每个以这种方式放入后台运行的任务被分配一个作业ID号,并打印输出到控制台上。利用命令fg 作业号可以将一个后台任务调回前台运行,此处的作业号就是你想要调回前台运行的任务的作业ID号。下面是一个例子:
1 | bash>fg 1 |
通过在bash命令提示符下键入jobs,可以获得一个活动作业列表。
- 快速跳至常用目录
你可能已经知道$PATH变量可以列出bash的“搜索路径”——当在当前目录不能找到请求的文件时,bash会自动搜索的目录。不过,bash也 支持$CDPATH变量,当试图改变目录时该变量列出cd命令转向的目录。为了使用这个特性,我们要对$CDPATH变量赋值一个目录列表,如下面的例子 所示:
1 | bash> CDPATH='.:~:/usr/local/apache/htdocs:/disk1/backups' |
现在,无论何时使用cd命令,bash将会检查$CDPATH列表中的所有目录来查找要转向的目录名。
- 执行计算
Bash可以在命令提示行下执行一些简单的算术操作。为了使用该特性,在命令提示符下输入你想要计算的算术表达式,并用双圆括号括起来,如下面的例子所示。Bash将会执行计算并返回结果。
1 | bash>echo$((16/2)) |
- 定制命令提示符
我们可以定制要显示的bash命令提示符,包括当前用户名和主机名,当前时间,平均负载和当前工作目录。要实现该目的,修改$PS1变量,如下所示:
1 | bash> PS1='u@h:w @> ' |
结果将会在命令行显示当前登录的用户名、主机名、当前工作目录和当前时间。从用户指南页可以获得bash可以理解的符号列表。
- 获得特定上下文帮助
Bash对所有内建命令都同时提供了帮助。键入help,可以查看内建命令列表。键入help命令名可以获得特定命令的帮助。Help后的命令名就是你想要查看帮助的命令。下面是一个例子:
1 | bash>help alias |
一些帮助文本
很明显,任何时刻在命令行键入man bash,都可以获得关于bash命令的详细帮助。