我们在命令行输入内容,与编辑一个文件类似,我们对命令行中输入的内容也需要编辑。命令行编辑包括以下几个方面:
1. 命令行自动补齐
您在输入一行命令时,如果忘记了命令的全名,只记得命令的前几个字母,或者命令参数中包含文件名,但文件名很长。这时,您就需要用到Bash提供的命令自动补齐功能。
第一种情况,命令名补齐。如history命令,您输入前三个字符his时,按一下Tab键,命令剩余的部分就会自动补齐。
[peter@ibi98 shell]$ his (输入到这里时,按一下Tab键,history命令就会自动补齐!) [peter@ibi98 shell]$ history
如果输入到hi时就按Tab键,没有反应,因为除了history命令,还有别的命令前两个字母也是hi,Bash不知道您想输入哪一个命令。这时再按一下Tab键,Bash就会把所有hi开头的命令列出来:
[peter@ibi98 shell]$ hi(输入到这里时,按一下Tab键,没反应,再按一下Tab键) hipstopgm history
我们可以看到,以hi开头的命令有两个。这两个命令的第三个字母不一样,所以上面输入his时Bash就知道您是要输入history,而不是hipstopgm。
第二种情况,文件名补齐。如当前目录下有shell_example.sh文件,如果用cat查看该文件内容,输入到cat s时按一下Tab键,文件名剩余的部分就会自动补齐。
[peter@ibi98 shell]$ ls animal hello.sh shell_example.sh test.sh [peter@ibi98 shell]$ cat s(按一下Tab键) [peter@ibi98 shell]$ cat shell_example.sh
如果当前目录下有超过一个文件名以s开头的文件,连按两下Tab键,就可以列出这些文件,再多输入一些字符再按Tab键就可以补齐。
2. 命令历史
您已经输入过的命令,Bash都保存在您的主目录下的.bash_history里(这是个隐藏文件,在个人主目录下输入ls -a就可以看到),您只需要用上下方向键(或是用组合键Ctrl+p和Ctrl+n)就可以再把这些命令调出来。另外,history命令可以显示您输入过的所有命令(保存的最大命令数由环境变量HISTSIZE决定)。
另外还有一个非常有用的组合键Ctrl+r可以搜索敲过的命令,您只需要用几个命令中的几个关键字符就可以搜索到前面已经敲过的命令。
(reverse-i-search)`cat': cat demo.txt
上面按Ctrl+r后,只需要输入cat,就可以把最后一个包含cat的命令找出来。
历史命令还可以直接再次执行,下面的命令可以直接执行历史命令:
!!或!-1 重复上一条命令 !n 重新执行第n条历史命令 !-n 重新执行倒数第n条历史命令 !string 重新执行以字符串string开头的最近的历史命令 !?string? 重新执行包含string的最近的历史命令
3. 光标跳转
输入命令时,有时会发现前面输入的有错误,或忘记了输入选项,这是就需要将光标移动到需要修改或添加的位置。在命令行中,移动光标最常用的是左右两个方向键。除此之外,还有更方便、效率更高的组合键:
Ctrl+f 向前移动一个字符 Ctrl+b 向后移动一个字符 Alt+f 向前移动一个单词 Alt+b 向后移动一个单词 Ctrl+a 移动到第一个字符 Ctrl+e 移动到最后一个字符
4. 命令编辑
光标移动到指定位置后,如果需要删除一些字符,或复制一些内容到当前位置,可以使用下面的组合键:
Ctrl+d 删除光标所在字符 Ctrl+w 删除光标所在字符开始至前一个空格后的字符 Alt+d 删除光标所在字符开始至下一个空格前的字符 Ctrl+u 删除光标所在字符开始至第一个字符 Ctrl+k 删除光标所在字符开始至最后一个字符 Ctrl+y 将刚才删除的内容复制到光标后面 Ctrl+c 取消命令
熟练掌握了这些光标移动和命令编辑的快捷键,加上前面我们学习的Ctrl+p和Ctrl+n,我们的手不用离开主键盘就可以完成绝大部分命令操作,极大地提高命令输入效率。