linux生产中我们经常需要查看某个软件是否安装,某个文件在哪里等,某个命令是否存在等。
1. which 查看可执行文件的位置
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果,查询命令和可执行文件,而且是PATH里的。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。which ls。
2 .whereis查找程序
whereis只可以查找命令,(man中说只能查命令、源文件和man文件,实际测试可以查大多数文件)。在$PATH路径基础上增加了一些系统目录的查找,查找范围比which稍大,查找速度快。可以通过 -b 选项,限定只搜索二进制文件。一般直接用locate更香,不要纠结了。
3. locate快速定位文件路径
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令(root用户执行),手动更新数据库。
locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。前面我们说linux中一切皆文件,那么locate牛逼的是一切皆可查
4. find暴力扫描查询查询
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。因为这玩意直接搜索整个文件目录,默认直接从根目录开始搜索,建议在以上命令都无法解决问题时才用它,功能最强大但速度超慢。除非你指定一个很小的搜索范围。通过 -name 选项指定要查找的文件名,支持通配符。
- 语法格式: find <指定目录> <指定条件> <指定动作>,这玩意有很多参数,实际使用直接man find查看下,实际一般用不了那么多。
find . -name "my*" 搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。 find /home/test_0 -name "*.txt" 查询/home/test_0目录下以.txt结尾的文件 find . -name "my*" -ls 搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息 find . -type f -mmin -10 搜索当前目录中,所有过去10分钟中更新过的普通文件 |
5 grep 过滤查找及“|”管道符
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理,这个玩意非常常用。尤其运维同学,一般配合多个命令同时使用。Linux grep 命令用于查找文件里符合条件的字符串,这玩意参数多的吓死人?为什么会有那么多参数呢?
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
[root@ds_001]# grep -n 'oo' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! The soup taste good.
18:google is the best tools for search keyword.
19:goooooogle yes