🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
对于Linux系统来说,我们经常面对的是字符界面环境。很多时候,我们无法很直观地搜索、查找到我们需要的文件。另外,每个版本Linux系统的文件放置路径也不尽相同。此刻,文件的搜索、查询命令命令就显得格外重要。为了降低学习、理解成本,我们可以将以下6个命令统一起来理解、记忆:which、type、whereis、locate、find、grep。 * * * * * **which(“查找可执行文件”)** which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 | 参数 |说明 | | --- | --- | |-a| 选项all的缩写,将所有PATH目录中可以找到的命令均列出,而不仅仅是第一个 | |-V| 或者v,显示可执行文件的版本信息 | 【例5.1.2-1】查找文件、显示命令useradd、which、cat的路径。 ~~~ [root@geeklp-test ~]# which adduser /usr/sbin/adduser [root@geeklp-test ~]# which -a which alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' /usr/bin/alias /usr/bin/which /usr/bin/which [root@geeklp-test ~]# which -v pwd GNU which v2.20, Copyright (C) 1999 - 2008 Carlo Wood. GNU which comes with ABSOLUTELY NO WARRANTY; This program is free software; your freedom to use, change and distribute this program is protected by the GPL. ~~~ 说明:which是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令当然不一样的! * * * * * **type** type命令用来显示指定命令的类型 ( alias:别名。 keyword:关键字,Shell保留字。 function:函数,Shell函数。 builtin:内建(内嵌)命令,Shell内建命令。 file:文件,磁盘文件,外部命令。 unfound:未找到) | 参 数|说明| | --- | --- | |-t|显示“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“别名”或者“内嵌指令”| |-p| 如果给出的指令为外部指令,则显示其绝对路径| |-a| 在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名 | 【例5.1.2-2】分别使用type命令的t、p、a三个选项及无选项来展示输出结果。 ~~~ [root@geeklp-test ~]# type -t ls alias [root@geeklp-test ~]# type -t tree file [root@geeklp-test ~]# type -p tree /usr/bin/tree [root@geeklp-test ~]# type -p pwd [root@geeklp-test ~]# type -a which which 是 `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' 的别名 which 是 /usr/bin/which [root@geeklp-test ~]# type cd cd 是 shell 内嵌 ~~~ 说明:命令tree是我后来安装的,这是一个外部命令。由于pwd是一个内建命令,所以选项p也显示不出其路径。 * * * * * **whereis** whereis命令用于在特定目录中查找符合条件的文件。whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。 whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。 |参数|说明| | --- | --- | |-b|只搜索二进制文件| |-B|<目录> 定义二进制文件查找路径| |-m |只搜索 man 手册| |-M|<目录> 定义 man 手册查找路径| |-s|只搜索源代码| | -S|<目录> 定义源代码查找路径| |-f |终止 <目录> 参数列表| |-u|搜索不常见(不是b,m,s选项指定的类型)记录| |-l|输出有效查找路径| 【例5.1.2-3】whereis命令的部分选项展示。 ~~~ [root@geeklp-test ~]# whereis -b tree tree: /usr/bin/tree [root@geeklp-test ~]# whereis -m tree tree: /usr/share/man/man1/tree.1.gz [root@geeklp-test ~]# whereis tree tree: /usr/bin/tree /usr/share/man/man1/tree.1.gz [root@geeklp-test ~]# whereis -u tree tree: /usr/bin/tree /usr/share/man/man1/tree.1.gz ~~~ * * * * * **locate** locate命令是一个外部命令,在最小化安装的CentOS7中不能直接使用,需要安装之后才能使用。 【例5.1.2-4】安装locate工具。 ~~~ [root@geeklp-test ~]# yum -y install mlocate [root@geeklp-test ~]# updatedb ~~~ locate命令用于查找符合条件的文档,该命令会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录,比find快很多。因为该命令是从数据库内查找,并不是在磁盘上直接查找。 |参数|说明| | --- | --- | |-i|忽略大小写差异查找| |-r|可跟正则表达式的显示方式| 【例5.1.2-5】用locate命令查找包含geeklp的文件或目录。 ~~~ [root@geeklp-test ~]# touch love-geeklp-best [root@geeklp-test ~]# updatedb [root@geeklp-test ~]# locate geeklp /root/geeklp-best /root/geeklp-dir /root/geeklp-ivan /root/geeklp-test /root/love-geeklp-best ~~~ 说明:本例中,文件love-geeklp-best是我刚刚创建的,所以必须要用命令updatedb更新一下数据库文件才能够查找到相关内容。 * * * * * **find** find是一个功能强大的命令。