文件搜索命令which/whereis/grep

2017-03-28 17:38 阅读 605 次 评论 0 条

今天所介绍的几个搜索命令的搜索速度远远快于find,但是无疑最强大、最精准、最实时的搜索命令依旧是find,然而下面几个命令在带来快捷的同时,也难免会有尴尬之处,所以当我们在文件搜索时,选择一个最适合的命令是非常重要的。

文件搜索命令which

which的一个很重要的功能就是查看命令的存在路径,比如我们想要知道ifconfig、gcc、g++等命令处于哪个目录时:

可以看出gcc存在于/usr/bin目录,ifconfig存在于/sbin目录之下。那么which命令是否还有其他功能呢?

上图的cp、mv、ls命令明显多了一行信息,其实这就是各个命令对应的别名,也就是说,which还可以查看某个命令是否有别名,别名是什么的功能。比如cp -i的别名就是cp,rm -i的别名就是rm等。

当我们在rm删除一个文件的时候,会提示你是否删除普通空文件。但是实际上在linux系统里面本身并没有询问确认的机制,而且绝大多数Unix你在使用的时候根本就不询问确认,之所以现在的linux会有询问机制,是因为别名的引入,比如rm -i,其中这个-i 选项就是一个询问的机制。

上图可以完全解释我的上述论点,当我们用绝对路径/bin/rm去删除一个文件的时候根本不会去询问是否删除。

总结:which的作用分为两点:①查看命令所在的路径 ②查看命令是否拥有别名,且别名是什么的功能。

文件搜索命令whereis

下面我们在linux下测试一下whereis都有哪些功能,与which是否如出一撤呢?

从图上可以看出,whereis的查询结果,前半部分与which功能一样,显示命令所在的路径,但是后面又多了一长串内容,其实这是该命令帮助文档的所在路径。

总结:whereis的功能可以概括为两点 ① 显示命令所在的路径 ② 显示该命令帮助文档的路径。

文件搜索命令grep

这个命令是在文件内容中查找某一个关键词所在的行,并单独显示有查询关键词的行。

如图,我在etc目录下查看mailcap的文件内容,我想获取文件内容中含有关键字image的行,我就可以通过grep匹配文件内容中的关键字,并将含有该关键字的行单独显示出来。

下面说下grep的选项:-i:不区分大小写,前面已经举过很多例子,就不做獒述。我具体分析一下-v选项:排除指定的字符串。

当我们用more查看/etc/inittab下的内容时,发现有很多行前面都有#,说到#,在linux中代表的是注释符。当我们用-v选项去排除关键字的时候,就得到了如下图的数据:

你会发现,上百行的内容,其实仅仅有一行是数据,剩下的都是注释,所以说-v选项是一个很有价值的选项。

总结:grep的功能可以概括为:对指定的文件内容进行字串匹配并单独显示字串所在行的信息,当加上-i选项时,搜索结果不区分大小写匹配,当加上-v选项时,可以对字串所在行进行排除,并显示非字串所在行的信息。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:文件搜索命令which/whereis/grep | 术与道的分享
分类:操作系统 标签:,
1024do.com导航_术与道导航平台

发表评论


表情