文件搜索
which
这个一般用来搜索命令,搜索文件不用这个,通常会把命令的完整路径输出到标准输出,即显示终端。
这个命令是通过环境变量PATH来找的,也就是说,如果环境变量没配置好,那么很可能找不到这个命令的路径。内建命令搜索不了!
常用参数:a
即which -a command
通常,不带这个参数,程序一旦找到第一个就会停止,如果用了参数a,
那么所有的PATH都会被搜索
whereis
查找二进制文件、源代码文件、命令的帮助文件,默认搜索三者
这个命令运行速度很快,因为是通过搜索内置数据库实现的
whereis [-bms] 文件
选项与参数:
-b :只找二进制的文件
-m :只找命令的帮助文件
-s :只找源代码文件
-u :搜寻不在上述三个项目当中的其他特殊文件
locate
通过名字来查找文件,更find有点像,因为这个locate有数据的加持,搜索速度会很快。所以,当你搜索不到的时候,可以手动升级下数据库(updatedb),然后再搜索。
updatedb:根据 /etc/updatedb.conf 的配置去搜寻系统硬盘内的档名,并升级 /var/lib/mlocate 内的数据库文件;
locate:依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字。
这个命令的选项很多,我比较常用-b '\name'这个选项,这个选项只搜索完全符合name的内容,否则,只要路径上出现name,这个程序都会搜索出来,比如你搜索ls
locate ls
var/lib/yum/yumdb/r/5389b7a218607a7a022c7108ede4f19b2867d5fb-redhat-lsb-core-4.0-7.el6.centos-x86_64/from_repo_timestamp
/var/lib/yum/yumdb/r/5389b7a218607a7a022c7108ede4f19b2867d5fb-redhat-lsb-core-4.0-7.el6.centos-x86_64/installed_by
/var/lib/yum/yumdb/r/5389b7a218607a7a022c7108ede4f19b2867d5fb-redhat-lsb-core-4.0-7.el6.centos-x86_64/reason
/var/lib/yum/yumdb/r/5389b7a218607a7a022c7108ede4f19b2867d5fb-redhat-lsb-core-4.0-7.el6.centos-x86_64/releasever
/var/lib/yum/yumdb/s/36c650d5bf113357fd4a8429fbacaf880f2cacf6-shadow-utils-4.1.5.1-5.el6-x86_64
/var/lib/yum/yumdb/s/e9ba0d8bd545bfaead6a86823178afbf3b4e70f5-sysvinit-tools-2.87-6.dsf.el6-x86_64
/var/lib/yum/yumdb/s/36c650d5bf113357fd4a8429fbacaf880f2cacf6-shadow-utils-4.1.5.1-5.el6-x86_64/checksum_data
/var/lib/yum/yumdb/s/36c650d5bf113357fd4a8429fbacaf880f2cacf6-shadow-utils-4.1.5.1-5.el6-x86_64/checksum_type
/var/lib/yum/yumdb/s/36c650d5bf113357fd4a8429fbacaf880f2cacf6-shadow-utils-4.1.5.1-5.el6-x86_64/from_repo
/var/lib/yum/yumdb/s/36c650d5bf113357fd4a8429fbacaf880f2cacf6-shadow-utils-4.1.5.1-5.el6-x86_64/from_repo_revision
/var/lib/yum/yumdb/s/36c650d5bf113357fd4a8429fbacaf880f2cacf6-shadow-utils-4.1.5.1-5.el6-x86_64/from_repo_timestamp
/var/lib/yum/yumdb/s/36c650d5bf113357fd4a8429fbacaf880f2cacf6-shadow-utils-4.1.5.1-5.el6-x86_64/installed_by
/var/lib/yum/yumdb/s/36c650d5bf113357fd4a8429fbacaf880f2cacf6-shadow-utils-4.1.5.1-5.el6-x86_64/reason
/var/lib/yum/yumdb/s/36c650d5bf113357fd4a8429fbacaf880f2cacf6-shadow-utils-4.1.5.1-5.el6-x86_64/releasever
/var/lib/yum/yumdb/s/e9ba0d8bd545bfaead6a86823178afbf3b4e70f5-sysvinit-tools-2.87-6.dsf.el6-x86_64/checksum_data
/var/lib/yum/yumdb/s/e9ba0d8bd545bfaead6a86823178afbf3b4e70f5-sysvinit-tools-2.87-6.dsf.el6-x86_64/checksum_type
/var/lib/yum/yumdb/s/e9ba0d8bd545bfaead6a86823178afbf3b4e70f5-sysvinit-tools-2.87-6.dsf.el6-x86_64/from_repo
/var/lib/yum/yumdb/s/e9ba0d8bd545bfaead6a86823178afbf3b4e70f5-sysvinit-tools-2.87-6.dsf.el6-x86_64/from_repo_revision
/var/lib/yum/yumdb/s/e9ba0d8bd545bfaead6a86823178afbf3b4e70f5-sysvinit-tools-2.87-6.dsf.el6-x86_64/from_repo_timestamp
/var/lib/yum/yumdb/s/e9ba0d8bd545bfaead6a86823178afbf3b4e70f5-sysvinit-tools-2.87-6.dsf.el6-x86_64/installed_by
/var/lib/yum/yumdb/s/e9ba0d8bd545bfaead6a86823178afbf3b4e70f5-sysvinit-tools-2.87-6.dsf.el6-x86_64/reason
/var/lib/yum/yumdb/s/e9ba0d8bd545bfaead6a86823178afbf3b4e70f5-sysvinit-tools-2.87-6.dsf.el6-x86_64/releasever
/var/lib/yum/yumdb/y/3caf24d19e8a3a44b6eb103c2a90547a68cb6710-yum-utils-1.1.30-42.el6_10-noarch
/var/lib/yum/yumdb/y/3caf24d19e8a3a44b6eb103c2a90547a68cb6710-yum-utils-1.1.30-42.el6_10-noarch/checksum_data
/var/lib/yum/yumdb/y/3caf24d19e8a3a44b6eb103c2a90547a68cb6710-yum-utils-1.1.30-42.el6_10-noarch/checksum_type
/var/lib/yum/yumdb/y/3caf24d19e8a3a44b6eb103c2a90547a68cb6710-yum-utils-1.1.30-42.el6_10-noarch/command_line
/var/lib/yum/yumdb/y/3caf24d19e8a3a44b6eb103c2a90547a68cb6710-yum-utils-1.1.30-42.el6_10-noarch/from_repo
/var/lib/yum/yumdb/y/3caf24d19e8a3a44b6eb103c2a90547a68cb6710-yum-utils-1.1.30-42.el6_10-noarch/from_repo_revision
/var/lib/yum/yumdb/y/3caf24d19e8a3a44b6eb103c2a90547a68cb6710-yum-utils-1.1.30-42.el6_10-noarch/from_repo_timestamp
/var/lib/yum/yumdb/y/3caf24d19e8a3a44b6eb103c2a90547a68cb6710-yum-utils-1.1.30-42.el6_10-noarch/installed_by
/var/lib/yum/yumdb/y/3caf24d19e8a3a44b6eb103c2a90547a68cb6710-yum-utils-1.1.30-42.el6_10-noarch/reason
/var/lib/yum/yumdb/y/3caf24d19e8a3a44b6eb103c2a90547a68cb6710-yum-utils-1.1.30-42.el6_10-noarch/releasever
这不是你想要的,所有要用locate -b '\ls'
/bin/ls
/usr/local/qcloud/YunJing/bin/ls
这就正常了
find
这命令超级强大,其他命令不行的情况下,可以直接用这个命令,这个命令是直接搜索硬盘,因此可以找到硬盘的所有东西,但也因为搜索硬盘,会比较慢。
这里我用的比较多的就是通过名字来找文件:
find path -name filename
比如要找ls,你可以这么写:
find / -name ls
我的结果是:
[root@VM-0-14-centos yum.repos.d]# find / -name ls
/usr/local/qcloud/YunJing/bin/ls
/bin/ls
如果对于找到的结果要执行某个命令,那么可以这么做:
find path expressions -exec command
比如要在/etc中找到权限为0700的文件,并列出详细信息,则可以这么写:
find /etc/ -perm 0700 -exec ls -ld {} \;
这里的{}是用来装find找到的结果,并作为ls的参数,\用来转义;
输出结果:
[root@VM-0-14-centos etc]# find /etc/ -perm 0700 -exec ls -ld {} \;
-rwx------ 1 root root 927 Mar 22 2017 /etc/cron.daily/makewhatis.cron
-rwx------. 1 root root 180 Jul 10 2003 /etc/cron.daily/logrotate
-rwx------ 1 root root 189 Jan 26 2015 /etc/cron.daily/mlocate.cron
drwx------. 2 root root 4096 Nov 15 2017 /etc/lvm/cache
drwx------. 2 root root 4096 Nov 15 2017 /etc/lvm/backup
drwx------. 2 root root 4096 Nov 15 2017 /etc/lvm/archive
drwx------. 2 root root 4096 Jun 19 2018 /etc/pki/rsyslog
drwx------. 2 root root 4096 Aug 15 2019 /etc/pki/CA/private
drwx------. 3 root root 4096 Jan 11 2022 /etc/selinux/targeted/modules/active
drwx------. 2 root root 12288 Jan 11 2022 /etc/selinux/targeted/modules/active/modules
刚才说了,这么命令很强大,除了通过名字来搜索,还可以通过权限、所有者、时间、大小、类型、uid、guid来搜索,还可以通过比较,比如大于某个时间,大于某个尺寸等等来搜索,详细的可以查看find的man手册。
打包、压缩
tar
压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
查 询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
这里的j代表用bzip2技术进行压缩或者解压
c代表打包
x达标解包
f代表后面要跟的文件名,即指定的结果的文件名
v表示要输出处理过程
另外,j有可能被z代替,表示用gzip技术来压缩
最后,可以通过-C来指定解压的目录