linux搜索服务器上的⽂件,在Linux云服务器上使⽤5种查命
Linux操作系统有5种和查相关的命令,它们是:whereis、locate、which、type、find。每种命令都有其适⽤的场景和⽅法。这篇⽂章总结了这5种查命令的使⽤⽅法,并配上⼀些⽰例来解释,供使⽤Linux云服务器的系统管理员参考。
whereis
whereis命令⽤来查⼆进制⽂件、源代码和帮助⼿册。whereis仅在常⽤的⼏个安装⽬录的范围内查,不会查整个系统上的所有⽂件。这虽然是whereis的局限性,但也正是由于这个原因,whereis的查速度⾮常快。另外值得注意的是,whereis不会查那些shell内置的命令。
⽐如,我们要查ls命令:
whereis ls
结果如下,其中/bin/ls是ls的路径,另外两个是帮助⼿册的路径。
ls: /bin/ls /usr/share/man/man1/ /usr/share/man/man1p/
如果我们把ls复制到home⽬录和/usr/bin/ls⽬录,再次执⾏whereis命令:
cp /bin/ls ~
cp /bin/ls /usr/bin/ls
whereis ls
结果如下,可以发现,whereis并没有查home⽬录,因为home⽬录并不是常⽤的安装⽬录之⼀。
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ /usr/share/man/man1p/
⽤whereis查cd这些shell内置的命令:
whereis cd
结果如下,只显⽰了帮助⼿册的路径。
cd: /usr/share/man/man1/ /usr/share/man/man1p/
locate
locate命令是基于⽂件数据库(/var/lib/mlocate/mlocate.db)的查⼯具,⽂件数据库是整个⽂件系统的⼀个镜像。locate命令的查模式默认是模糊匹配的,也就是说包含⽂件名的所有⽂件都会被查到,因此返回结果通常⽐较多。值得注意的是,⽂件数据库通常每天更新⼀次,因此可能⽆法查⼀些刚刚创建或删除的⽂件。我们可以执⾏updatedb命令⼿动更新这个数据库。由于是基于⽂件数据库⽽不是⽂件系统进⾏查,locate的执⾏速度也是相当快的。
仍然以ls为例进⾏查:
locate ls
我们会得到⼤量含有ls的结果。为了让输出结果更精确,可以⽤-b指令,也就是使⽤精确匹配模式来查。
locate -b "\ls"
这样输出结果就只包含ls命令的所在的路径了。
/bin/ls
linux所有命令都无法使用which
which命令的查范围是环境变量PATH,并且默认只返回第⼀个结果,执⾏速度很快。如果我们查的是别名,which命令也会在查之前,映射到别名对应的真实路径。
⽐如我们定义了⼀个名为ll的别名,查命令如下:
which ll
结果如下:
alias ll='ls -l --color=auto'
/bin/ls
如果我们要显⽰全部结果,加上-a指令即可。
which -a your_command
type
type命令⽤来显⽰某个命令的类型,⽐如别名、关键词、函数、内置命令、⽂件等。和whereis命令⼀样,type命令也仅在常⽤的⼏个安装⽬录的范围内查。
显⽰cd命令的类型:
type cd
cd is a shell builtin
显⽰某个⼆进制⽂件的类型:
type sudo
sudo is /usr/bin/sudo
显⽰别名:
type ls
ls is aliased to `ls --color=auto'
find
在5种查命令中,find命令是功能最强⼤的命令,也是执⾏速度最慢的命令。和其他4种命令不同,find命令是基于⽂件系统的查,⼀个⽂件节点⼀个⽂件节点的查。find命令甚⾄可以对查的结果进⾏后续的操作。find命令的功能⾮常强⼤,本⽂篇幅所限,这⾥仅展⽰⼀些常⽤⽰例。
find命令的基本使⽤⽅法:
find [path] [option] [action]
在home⽬录及其⼦⽬录中,查⽂件名为aaa的⽂件:
find ~ -name 'aaa'
在整个⽂件系统中,查修改时间24⼩时内的⽂件:
find / -mtime 0
在nginx的web⽬录及其⼦⽬录中,查所属⽤户为nginx的⽂件:
find /usr/share/nginx/html/ -user nginx
在当前⽬录中,查权限为744的⽂件:
find -perm -0744
在当前⽬录中,查⽂件名为aaa的⽂件,并显⽰其详细信息:
find -name 'aaa' -exec ls -l {} \;
以上就是Linux操作系统中5种查命令的介绍,希望对⼤家有所帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。