Linux命令行自动补全功能详解(实例演示)
文件名(或者目录名)是执行 Linux 命令中最常见的参数,例如前面介绍的 cd、mkdir、cp 等命令,都涉及到了文件名。然而对初学者来说,输入完整的文件名感觉很麻烦,尤其面临文件名(目录名)特别长的时候。 考虑到这种情况,Shell(Bash)提供了一种称为“命令行自动补全”的功能,即在输入文件名的时候,只需要输入该文件名的前几个字符,然后按 Tab 键,Shell 就可以自动将文件名补全。 举个例子,在 /etc 目录下,执行如下命令:
[root@localhost ~]# cd /etc 那么,如果当前目录中含有多个以指定字符(或字符串)开头的目录或文件,Shell 还可以成功辨认吗?答案是否定的,但它会以列表的形式给出所有以指定字符或字符串开头的文件或目录,供用户选择。 例如,还是在 /etc 目录下,执行如下命令: [root@localhost etc]# cd b <-- 连续按两次 Tab 键 bash_completion.d/ blkid/ bonobo-activation/ bashrc bluetooth可以看到,当按一次 Tab 键时,Shell 没有任何反映,原因就是当前目录下以 "b" 为开头的文件或目录有多个(2 个以上),仅凭一个字符 "b" 无法精准判断出具体指的是哪个文件。而当再一次按下 Tab 键时,Shell 会列表的形式显示给用户当前目录下所有以 "b" 开头的文件或目录。 事实上,Shell 提供的命令行补全功能不仅适用于补全文件名,也同样适用于所有 Linux 命令。举个例子,当输入 ca 并连续按下 2 次 Tab 键时,Shell 会罗列出所有以 "ca" 开头的 Linux 命令,如下所示: [root@localhost etc]# ca <--连续按两次 Tab 键 cacertdir_rehash cache_restore capsh catchsegv cache_check cal captoinfo cache_dump caller case cache_repair canberra-gtk-play cat另外,Shell 还有一套被称作通配符的转用符号(如表 1 所示),这些通配符可以搜索并匹配文件名的一部分,从而大大简化了文件名的输入。
为了学习这些通配符的用法,首先需要建立一个空目录(如 test),并在该目录中创建一些文件(供测试用),执行命令如下:
[root@localhost etc]# makdir test 在此基础上,继续执行如下命令:
[root@localhost test]# ls a* <--匹配所有以 a 字符开头的文件名 接下来,列举一下使用 ? 匹配文件名的示例:
[root@localhost test]# ls ????e 最后,列举一些使用括号 [] 匹配文件名的示例:
[root@localhost test]# ls [abw]* 不仅如此,[] 中还可以通过 -(短横线)表示一定范围内的任意字符(或数字),例如:
[root@localhost test]# ls [a-g]* (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |