• 第九章 查找文件或者命令


    一、locate        #查找文件或者目录的路径 用到了本地的数据库 文件名称的数据库 根据本地的数据库进行查找文件,不会查找到最新的文件

    [root@jindada ~]# yum install -y mlocate

    选项:

    -i        #不区分大小写

    -r        #简单使用正则表达式     $ 结尾

    /var/lib/mlocate/mlocate.db

    [root@jindada ~]# updatedb        #更新数据库

    #把系统中所有文件名称包含passwd的文件全部查找出来

    [root@jindada ~]# locate passwd
    /etc/passwd
    /etc/passwd-
    /etc/pam.d/passwd
    /etc/security/opasswd
    /root/passwd
    /usr/bin/gpasswd
    /usr/bin/grub2-mkpasswd-pbkdf2
    /usr/bin/passwd
    /usr/lib/firewalld/services/kpasswd.xml


    [root@jindada ~]# locate hostnamectl
    /usr/bin/hostnamectl
    /usr/share/bash-completion/completions/hostnamectl
    /usr/share/man/man1/hostnamectl.1.gz
    /usr/share/zsh/site-functions/_hostnamectl

    [root@jindada ~]# touch hostnamectl

    [root@jindada ~]# updatedb

    [root@jindada ~]# locate hostnamectl
    /root/hostnamectl
    /usr/bin/hostnamectl
    /usr/share/bash-completion/completions/hostnamectl
    /usr/share/man/man1/hostnamectl.1.gz
    /usr/share/zsh/site-functions/_hostnamectl

    [root@jindada ~]# updatedb
    [root@jindada ~]# locate hostnamectl
    /root/hostnamectl
    /usr/bin/hostnamectl
    /usr/share/bash-completion/completions/hostnamectl
    /usr/share/man/man1/hostnamectl.1.gz
    /usr/share/zsh/site-functions/_hostnamectl
    [root@jindada ~]# locate -i hostnamectl
    /opt/HOSTNAMEctl
    /root/hostnamectl
    /usr/bin/hostnamectl
    /usr/share/bash-completion/completions/hostnamectl
    /usr/share/man/man1/hostnamectl.1.gz
    /usr/share/zsh/site-functions/_hostnamectl


    [root@jindada ~]# locate -r hostname$
    /etc/hostname
    /etc/selinux/targeted/active/modules/100/hostname
    /usr/bin/hostname
    /usr/bin/nmtui-hostname
    /usr/lib64/gettext/hostname

    二、which       #查找命令的绝对路径

    [root@jindada ~]# which ping
    /usr/bin/ping

    #查找命令的绝对路径时,是通过PATH环境变量中的路径进行查找
    [root@jindada ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

    #不使用which的别名进行查找命令的绝对路径

    [root@jindada ~]# which cp
    /usr/bin/cp


    [root@jindada ~]# rpm -qf `which ping`
    iputils-20160308-10.el7.x86_64

    [root@jindada ~]# rpm -qf /usr/bin/ping
    iputils-20160308-10.el7.x86_64

    三、whereis        #查找系统二进制程序、man帮助文件、源代码文件 查找不到自己创建的文件

    选项:

    -b        #只查找二进制程序文件

    -m        #查找man帮助文件

    -s        #查找源代码文件

    [root@jindada ~]# whereis ping
    ping: /usr/bin/ping /usr/share/man/man8/ping.8.gz


    [root@jindada ~]# whereis -b ping
    ping: /usr/bin/ping
    [root@jindada ~]# whereis -m ping
    ping: /usr/share/man/man8/ping.8.gz

    四、 type命令         #显示指定命令的类型 判断你的命令是内部命令还是外部命令

    选项:

    -a       #显示内置命令的绝对路径

    -p        #只显示命令的绝对路径

    help命令可以显示系统中所有的内置命令

     

    [root@sh-jindada ~]# type cd       #cd是一个内置命令
    cd is a shell builtin
    [root@sh-jindada ~]# type -a cd       #查看内部命令的路径
    cd is a shell builtin
    cd is /usr/bin/cd
    [root@sh-jindada ~]# type ip        #外部命令是不需要加-a的
    ip is /usr/sbin/ip

    #查看系统中的内置命令

    [root@sh-jindada ~]# help

    #只显示命令的绝对路径

    [root@sh-jindada ~]# type -p ip
    /usr/sbin/ip
    [root@sh-jindada ~]# type -p cd
    [root@sh-jindada ~]# type -pa cd       #内置命令需要加-a
    /usr/bin/cd

     

    五、find         #文件查找命令 指定路径查找 根据名称 大小 权限 时间等查找

    选项:

    -type         #根据文件类型进行查找

    f            #普通文件

    d            #目录

    l           #软连接文件

    s           #socket文件 套接字文件

    p           #管道文件


    -name         #根据名称进行查找


    -iname         #查找的时候忽略大小写

    * #特殊符号 通配符 不是正则 所有的意思


    命令 目录 类型 普通文件 根据名称 叫什么名字
    [root@sh-jindada ~]# find /etc -type f -name "hostname"       #精确查找
    /etc/hostname
    [root@sh-jindada ~]# find /etc -type f -name "hostname*"
    /etc/hostname
    [root@sh-jindada ~]# find /etc -type f -name "*hostname*"
    /etc/dbus-1/system.d/org.freedesktop.hostname1.conf
    /etc/hostname

    #全局查找 * 所有的意思

    [root@sh-jindada ~]# find / -type f -name "*hostname*"
    /proc/sys/kernel/hostname
    /etc/dbus-1/system.d/org.freedesktop.hostname1.conf
    /etc/hostname
    /root/hostname{html.php}
    /root/hostname.html
    /root/hostname.php
    /root/hostname
    /usr/bin/hostname
    /usr/bin/hostnamectl

    #查找以hostname为结尾的文件

    [root@sh-jindada ~]# find / -type f -name "*hostname"
    /proc/sys/kernel/hostname
    /etc/hostname
    /root/hostname
    /usr/bin/hostname
    /usr/lib64/gettext/hostname

    #以hostname为开头的文件

    [root@sh-jindada ~]# find / -type f -name "hostname*"
    /proc/sys/kernel/hostname
    /etc/hostname
    /root/hostname{html.php}
    /root/hostname.html
    /root/hostname.php
    /root/hostname
    /usr/bin/hostname
    /usr/bin/hostnamectl
    /usr/lib64/gettext/hostname
    /usr/share/man/man1/hostname.1.gz
    /usr/share/man/man1/hostnamectl.1.gz

    #精确查找,名称只能为hostname

    [root@sh-jindada ~]# find / -type f -name "hostname"
    /proc/sys/kernel/hostname
    /etc/hostname
    /root/hostname
    /usr/bin/hostname
    /usr/lib64/gettext/hostname


    #查找名称为hostname的目录

    [root@sh-jindada ~]# find / -type d -name "hostname"
    /etc/selinux/targeted/active/modules/100/hostname
    [root@sh-jindada ~]# ll -d /etc/selinux/targeted/active/modules/100/hostname
    drwx------. 2 root root 44 Jun 9 19:57 /etc/selinux/targeted/active/modules/100/hostname
    [root@sh-jindada ~]#

    #查找名称的时候忽略大小写

    [root@sh-jindada ~]# find / -type d -iname "hostname"
    /etc/selinux/targeted/active/modules/100/hostname
    /usr/lib64/perl5/auto/Sys/Hostname


    #根据目录的层级查找

    [root@sh-jindada ~]# find / -maxdepth 2 -type d -name "hostname"
    /root/hostname
    [root@sh-jindada ~]#

     

  • 相关阅读:
    jenkins中通过Publish Over SSH将项目部署到远程机器上
    GitHub 开源的 MySQL 在线更改 Schema 工具【转】
    MySQL ProxySQL读写分离实践
    MySQL ProxySQL读写分离使用初探
    LVS+Keepalived实现DBProxy的高可用
    Redis Codis 部署安装
    CS 和 BS 的区别和优缺点(转)
    Linux的SOCKET编程详解(转)
    数据结构-深度遍历和广度遍历(转)
    社保相关
  • 原文地址:https://www.cnblogs.com/jhno1/p/13280762.html
Copyright © 2020-2023  润新知