在 Linux 系统中,我们可能经常需要去查找某个文件,但是因为文件太多,又不记得到底是放在哪个目录下了。这样如果一个个目录去遍历的话,很浪费时间和精力。所以今天就告诉大家在 Linux 下如何快速查找到一个文件。
首先第一个介绍的就是 which
命令啦,which
命令它的作用就是在 PATH 系统环境指定的那些路径中去搜索某个系统命令的位置,依次根据这些目录的顺序进行搜索然后返回第一个匹配到的结果返回。换句话说使用 which
命令其实是可以看到系统中某个命令到底是不是存在并且它到底执行的是具体哪一个目录下的命令。所以如果你想知道你执行的命令是在哪个目录下,那么就可以使用 which
去进行查找。当然这里需要注意的是它是在 PATH 指定的路径中才可以,并且普通用户和超级用户的 PATH 是不一样的。
关于 which
的语法格式:
which [option] [programname]which [选项] [命令名称]
which
命令主要用于在 PATH 环境变量里查找指定的命令。关于 which
命令的参数选项常用的只有一个 -a
选项。通常默认在 PATH 路径中会由前往后进行命令的查找,如果找到了,那么后续的路径就不会进行匹配了。如果使用 -a
选项的话那么在查找时就会遍历所有的 PATH 路径,并且把所有匹配到的都进行输出。
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/mysql:/usr/local/mysql:/usr/local/mysql:/root/bin
#先查一下环境变量
$ which date
/usr/bin/date
#查看 date 命令的全路径
$ which which
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
/usr/bin/which
#如果指定的命令有别名,那么使用 which 也会将别名显示出来
$ which cd
/usr/bin/which: no cd in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
#bash 内置命令一般是没有办法使用 which 的
上面是对 which
命令的使用简单做了下示例,下面我们加上 -a
这个参数试试:
$ which mysql
/usr/local/sbin/mysql
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
$ PATH=$PATH:/application/mysql/bin/
#添加路径到环境变量
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/applicaion/mysql/bin
$ which -a mysql
/usr/local/sbin/mysql
/application/mysql/bin/mysql
#所有包含 mysql 命令的路径都显示出来了
说完了第一个命令,那么接下来我们继续来说第二个命令,第二个命令是 whereis
,这个命令很有意思啊,相当于两个英文的拼接,它的作用也就是它翻译过来的字面意思。它的作用想必大家也都可以看出来,就是用来查找文件的。这个命令它会在特定的目录中查找符合我们搜索条件的文件,这个命令它会找到指定的文件的源或者是二进制文件又或者是 man
手册等等内容。需要注意的是这个命令也是用于 PATH 系统环境变量里面查找指定的命令的。关于它的语法如下:
whereis [option] [filename]whereis [选项] [文件名]
同样的,我们先来看看它的常用参数:
-b:这个选项用来查找可执行文件使用的
-m:用来查找 man 手册,帮助文档的
-s:这个选项是用来查找源代码文件的
上面已经了解到了语法格式以及选项参数相关,那么接下来我们来实操一下:
$ whereis svn
svn: /usr/bin/svn /usr/share/man/man1/svn.1.gz
$ whereis -b svn
svn: /usr/bin/svn
#只查找可执行文件
$ whereis -m svn
svn: /usr/share/man/man1/svn.1.gz
#只查找 man 文件
$ whereis -s svn
svn:
#只查找源代码文件,但是可以看出并没有找到相应的文件
以上内容就是在 Linux 中的查找命令,这个命令也是挺常用的,比如在写一些 shell 脚本的时候,就会显得至关重要,shell 脚本里有时候如果要执行一个命令,那么最好是写上执行命令的全路径,这样会保证执行 100% 成功,关于 Linux 下查找命令就介绍到这里,感兴趣的朋友可以实操研究研究。