locate 命令

命令名称:locate
命令所在路径:/usr/bin/locate
执行权限:所有用户
功能描述:在文件资料库中查找文件或目录
语法:locate [选项 -ci] [文件或目录名称]
-c:仅显示搜索到的结果数量
-i:忽略大小写

该命令在系统内部为了一个文件资料库(/var/lib/mlocate/mlocate.db),我们可以通过locate locate命令来查找,系统中的所有文件和目录都会被定期更新收录其中。 对于刚创建的文件,可能通过该命令可能无法查找到,因为刚创建的文件没有被收录到文件资料库中,此时,你需要通过updatedb命令,手动更新文件资料库。 此外,部分特殊的目录也不在该文件资料库的收录范围之内,例如 /tmp,该目录下的文件或目录是无法被命令搜索到的。因此,locate命令并不能完成替代find命令,只能是作为find命令的补充。 locate 与 find 比较: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。 locate 的速度比 find 快,它并不是真的查找,而是查找文件资料库,部分目录也不会收录到数据库中,所以locate的查找并不是实时的,而是以文件资料库的更新时间为准,系统会自动维护该文件资料库,也可以手工更新文件资料库。

  1. ## 范例
  2. locate libai.txt ## 文件资料库中搜索libai.txt文件或目录
  3. locate -i LIBAI.txt ## 文件资料库中搜索LIBAI.txt文件或目录,忽略大小写
  4. locate -c libai.txt ## 文件资料库中搜索libai.txt文件或目录的数量
  5. locate locate ## 寻找该命令文件资料库的位置
  6. updatedb ## 手动更新文件资料库

which 命令

命令名称:which
命令所在路径:/usr/bin/which
执行权限:所有用户
功能描述:搜索命令所在目录及别名信息
语法:which [选项] [命令名称]

  1. ## 范例
  2. [root@localhost /]# which rm ## 搜索rm命令所在路径
  3. alias rm='rm -i' ## 结果显示,rm命令具有别命为 rm -i
  4. /usr/bin/rm ## 命令所在目录
  5. [root@localhost /]# which find ## 搜索find命令所在的路径
  6. /usr/bin/find ## 命令所在目录,同时也可得知find命令没有别名

whereis 命令

命令名称:whereis
命令所在路径:/usr/bin/whereis
执行权限:所有用户
功能描述:搜索命令或配置文件所在目录即帮助文档的路径

当一个名称既对应命令,又对应配置文件时,优先显示命令的信息。

语法:whereis [命令名称]

  1. ## 范例
  2. [root@localhost /]# whereis ls
  3. ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
  4. ## 命令所在路径,命令帮助文档所在路径
  5. [root@localhost ~]# whereis services
  6. services: /etc/services /usr/share/man/man5/services.5.gz
  7. ## 返回结果中的路径,1表示命令的帮助文档,5表示配置文件的帮助文档

grep 命令

命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
功能描述:查找文件里符合条件的字符串并输出该行
语法:grep [选项 -ivnc] [指定字符串] [文件名称]
-i:不区分大小写
-v:排除指定字符串
-n:显示行号
-c:列出符合条件的行数的数量
—color=auto:搜索出的关键字用颜色显示

  1. ## 范例
  2. grep "三千尺" libia.txt ## 列出libai.txt文件中,含有“三千尺”字符串的行
  3. grep -in "ABC" libia.txt ## 列出libai.txt文件中,含有“ABC”字符串的行,忽略大小写并显示行号
  4. grep -c "三千尺" libia.txt ## 显示libai.txt文件中,含有“三千尺”字符串的行的行数
  5. grep -v "^#" test.sh ## 列出test.sh脚本文件中,排除行首注释的行,^ 表示行首