Linux命令之命令查找方式

  • 1 命令类型

        linux中命令类型分为两类,一类为shell中自带的命令,即内部命令,而其它的在文件系统之上的命令程序,即外部命令.
    
            内部命令的优点: 命令程序在内存中,使用更快捷
    
            相关命令: type,enable
                type - 查看命令类型(自身也是内部命令)
                    type COMMAND
    
                enable - 禁用或启用某指定内部命令
                    enable [options] COMMAND
                        enable 列出所有内部命令
                        enable -n COMMAND 禁用指定内部命名
                        enable COMMAND 启用指定内部命令
  • 2 外部命令查找顺序
        命令的查找在系统上,实质为查找某路径下的命令程序.
        Linux中通过PATH变量保存系统查找的路径.找到的程序文件正常执行后,会将其找到的文件路径保存至hash表中.
    
            hash表,用于缓存已经执行成功后的命令路径,保存至特定的内存空间中.
    
            相关变量:
                PATH变量保存的默认值(CentOS6.x)
                # echo $PATH   
                /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin
                :/usr/sbin:/usr/bin:/root/bin
    
            相关命令: which,whereis,hash
    
                which - 显示命令完整路径
                    which COMMAND
                whereis - 显示命令路径及帮助文档路径
                    whereis COMMAND
                hash - 忘记或显示hash表中缓存信息
                    hash 列出hash表信息
                    hash -d COMMAND  删除hash表中指定命令的缓存
                    hash -r 清空hash表
  • 3 命令别名
        alias - 命令别名创建
    
            alias name=‘VALUE‘
    
            示例:
                alias hh=‘echo hhhh‘
    
        unalias - 取消别名
    
            unalias NAME
  • 4 查找顺序证明
    • 4.1 hash与PATH的顺序

      准备环节:
          查看whoami所在路径
          # which whoami
          /usr/bin/whoami
          显示当前PATH值
          # echo $PATH
          /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin
          :/usr/bin:/root/bin
          清空hash表
          # hash -r
          # hash
          hash: hash table empty
      
      实验步骤:
          先执行whoami,让其路径保存至hash表中.
          再将whoami文件移至PATH的其它目录下.
          此时再次执行whoami命令,如果whoami命令正常显示,
          则说明是在PATH中找到whoami程序文件,则查找顺序是PATH优先于hash,反之亦然.
      
          # whoami        
          root
          # hash    
          hits    command
          1    /usr/bin/whoami
          # mv /usr/bin/whoami /bin      
          # whoami           
          -bash: /usr/bin/whoami: No such file or directory
      
          无法找到,证明是在hash表中找到的whoami路径.因此hash优先于PATH.
    • 4.2 内部和外部的顺序
      准备环节:
      
          pwd是内部命令
          # type pwd
          pwd is a shell builtin
          pwd文件所在路径
          # which pwd
          /bin/pwd
          清空hash表
          # hash -r 
          hash: hash table empty
          禁用pwd内部命令,使其使用外部命令执行pwd
          # enable -n pwd
      
      实验步骤:
      
          将pwd命令的路径缓存至hash表中,然后再将whoami命令复制到hash中记录的路径,命名为pwd.
          此时将pwd命令的内部命令启用,执行pwd.
          如果显示的结果为whoami的结果,则表示是从hash表中查询到的,否则是在内部命令查询到的.反之亦然.
      
          # pwd          显示当前所在工作目录路径
          centos6.example.com
          # hash
          hits    command
             1    /bin/pwd
          # cp /usr/sbin/whoami /bin/pwd      将whomai命令复制到/bin下并重命名为pwd
          cp: overwrite `/bin/pwd‘? y
          # pwd         显示当前用户名
          root
          # enable pwd  启用pwd内部命令
          # pwd
          /root
      
          结果pwd显示的原信息,证明内部命令优先于外部命令
    • 4.3 alias和外部的顺序
      准备环节:
          定义一个与pwd同名的别名
          # alias pwd=‘echo hello‘
          启用pwd内部命令
          # enable pwd
      
      实验步骤:
          使用pwd命令,查看结果.如果输出hello,则表示alias优于内部命令.反之亦然.
      
          # alias pwd=‘echo hello‘
          # enable pwd
          # pwd
          hello
      
          结果表明alias优于内部命令
  • 5 总结
        命令分为: 内部命令和外部命令
        命令: type,enable,hash,which,whereis,alias,unalias
        变量: PATH(保存命令查找路径,以:隔开)
        命令查询顺序为: 
            alias -> 内部命令 -> hash -> PATH
    
        补充: 
            在使用别名时,临时使用命令本身.实现方法:
                \COMMAND
                ‘COMMAND‘
                "COMMAND"
                /PATH/TO/COMMAND  使用命令的绝对路径
    
                例:
                    # alias echo=‘echo 123‘
                    # echo abc
                    123 abc
                    # \echo abc
                    abc

Linux命令之命令查找方式

  • 1 命令类型

        linux中命令类型分为两类,一类为shell中自带的命令,即内部命令,而其它的在文件系统之上的命令程序,即外部命令.
    
            内部命令的优点: 命令程序在内存中,使用更快捷
    
            相关命令: type,enable
                type - 查看命令类型(自身也是内部命令)
                    type COMMAND
    
                enable - 禁用或启用某指定内部命令
                    enable [options] COMMAND
                        enable 列出所有内部命令
                        enable -n COMMAND 禁用指定内部命名
                        enable COMMAND 启用指定内部命令
  • 2 外部命令查找顺序
        命令的查找在系统上,实质为查找某路径下的命令程序.
        Linux中通过PATH变量保存系统查找的路径.找到的程序文件正常执行后,会将其找到的文件路径保存至hash表中.
    
            hash表,用于缓存已经执行成功后的命令路径,保存至特定的内存空间中.
    
            相关变量:
                PATH变量保存的默认值(CentOS6.x)
                # echo $PATH   
                /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin
                :/usr/sbin:/usr/bin:/root/bin
    
            相关命令: which,whereis,hash
    
                which - 显示命令完整路径
                    which COMMAND
                whereis - 显示命令路径及帮助文档路径
                    whereis COMMAND
                hash - 忘记或显示hash表中缓存信息
                    hash 列出hash表信息
                    hash -d COMMAND  删除hash表中指定命令的缓存
                    hash -r 清空hash表
  • 3 命令别名
        alias - 命令别名创建
    
            alias name=‘VALUE‘
    
            示例:
                alias hh=‘echo hhhh‘
    
        unalias - 取消别名
    
            unalias NAME
  • 4 查找顺序证明
    • 4.1 hash与PATH的顺序

      准备环节:
          查看whoami所在路径
          # which whoami
          /usr/bin/whoami
          显示当前PATH值
          # echo $PATH
          /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin
          :/usr/bin:/root/bin
          清空hash表
          # hash -r
          # hash
          hash: hash table empty
      
      实验步骤:
          先执行whoami,让其路径保存至hash表中.
          再将whoami文件移至PATH的其它目录下.
          此时再次执行whoami命令,如果whoami命令正常显示,
          则说明是在PATH中找到whoami程序文件,则查找顺序是PATH优先于hash,反之亦然.
      
          # whoami        
          root
          # hash    
          hits    command
          1    /usr/bin/whoami
          # mv /usr/bin/whoami /bin      
          # whoami           
          -bash: /usr/bin/whoami: No such file or directory
      
          无法找到,证明是在hash表中找到的whoami路径.因此hash优先于PATH.
    • 4.2 内部和外部的顺序
      准备环节:
      
          pwd是内部命令
          # type pwd
          pwd is a shell builtin
          pwd文件所在路径
          # which pwd
          /bin/pwd
          清空hash表
          # hash -r 
          hash: hash table empty
          禁用pwd内部命令,使其使用外部命令执行pwd
          # enable -n pwd
      
      实验步骤:
      
          将pwd命令的路径缓存至hash表中,然后再将whoami命令复制到hash中记录的路径,命名为pwd.
          此时将pwd命令的内部命令启用,执行pwd.
          如果显示的结果为whoami的结果,则表示是从hash表中查询到的,否则是在内部命令查询到的.反之亦然.
      
          # pwd          显示当前所在工作目录路径
          centos6.example.com
          # hash
          hits    command
             1    /bin/pwd
          # cp /usr/sbin/whoami /bin/pwd      将whomai命令复制到/bin下并重命名为pwd
          cp: overwrite `/bin/pwd‘? y
          # pwd         显示当前用户名
          root
          # enable pwd  启用pwd内部命令
          # pwd
          /root
      
          结果pwd显示的原信息,证明内部命令优先于外部命令
    • 4.3 alias和外部的顺序
      准备环节:
          定义一个与pwd同名的别名
          # alias pwd=‘echo hello‘
          启用pwd内部命令
          # enable pwd
      
      实验步骤:
          使用pwd命令,查看结果.如果输出hello,则表示alias优于内部命令.反之亦然.
      
          # alias pwd=‘echo hello‘
          # enable pwd
          # pwd
          hello
      
          结果表明alias优于内部命令
  • 5 总结
        命令分为: 内部命令和外部命令
        命令: type,enable,hash,which,whereis,alias,unalias
        变量: PATH(保存命令查找路径,以:隔开)
        命令查询顺序为: 
            alias -> 内部命令 -> hash -> PATH
    
        补充: 
            在使用别名时,临时使用命令本身.实现方法:
                \COMMAND
                ‘COMMAND‘
                "COMMAND"
                /PATH/TO/COMMAND  使用命令的绝对路径
    
                例:
                    # alias echo=‘echo 123‘
                    # echo abc
                    123 abc
                    # \echo abc
                    abc
时间: 2024-10-21 17:01:58

Linux命令之命令查找方式的相关文章

linux下find(文件查找)命令的详解

文件查找命令locate和find详解 locate 配合数据库缓存,快速查看文件位置,非实时查找( 数据库查找) find 实际搜寻硬盘查询文件名称 ,实时查找 locate简介 locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在

find——文件查找命令 linux一些常用命令

find 命令eg: 一般文件查找方法: 1.  find /home -name file  ,  在/home目录下查找文件名为file的文件2.  find /home -name '*file*'  ,  在/home目录下查找文件名包含file的文件3.  find /home -name 'file*'  ,  在/home目录下查找以file开头的文件名的文件4.  find /home -size 512c  ,    在/home目录下查找512kb大小的文件5.  find

Linux下的文件查找命令——find

Linux下几个常见的文件查找命令: which       查看可执行文件的位置 whereis    寻找特定文件,查看文件的位置 locate       配合数据库查看文件位置 find          实际搜寻硬盘查询文件名称 通常情况下find命令并不是很常用,大家都优先使用whereis和locate命令来查找,因为whereis和locate命令都是利用数据库来查找文件所在,并没有实际查询硬盘,所以速度很快,节省时间.但是我们的find命令依然很强大,它的查找条件相当多,对于用

Linux的五个查找命令

Linux的五个查找命令 转自: 阮一峰 http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html 使用电脑的时候,经常需要查找文件. 在Linux中,有很多方法可以做到这一点.国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条.大多数程序员,可能经常使用其中的2到3条,对这5条命令都很熟悉的人应该是不多的. 1. find find是最常见和最强大的查找命令

Linux的几种查找命令

which命令 which用来查找系统命令,比如ls.cat等,它是从PATH变量指定的文件夹中搜索的,当指定的文件夹中有与该命令同名的二进制文件时,就会给出这个文件的路径,也就是该命令的路径. 但是,好像必须是二进制文件才可以,我试过在/usr/bin中随便加一个文件,然后which并没有搜出来: m@meng:/bin$ sudo touch new m@meng:/bin$ which new m@meng:/bin$ 然并卵啊... which在默认情况下,只返回第一个匹配到的结果:加上

Linux 下基本的查找命令和查看信息

查找命令和硬件信息查看是日常系统管理.维护最常的操作.下面就 Linux 的基本查找命令做一个简要的比较,并列举一些常用的硬件信息查看命令. man 常用选项 -k 知道功能.不知道名称 -f 知道名称.不知道功能 各种查找命令比较 whereis 查找命令的可执行文件.源文件.man page路径 whatis 读取命令的描述 apropos 基于功能的查找 which 找出将要运行的命令的版本 locate 搜索文件名数据库 find 根据指定的查询条件搜索文件 find . -type f

Linux的五个查找命令find,locate,whereis,which,type

Linux的五个查找命令 1. find 最常见且最强大的命令,可以查找任何文件. 格式 $ find   指定目录   指定条件   指定动作 指定目录: 所要搜索的目录及其子目录,默认当前目录. 指定条件: 所要搜索的文件的特征. 指定动作: 对搜索结果进行特定的处理. 提醒:如果什么参数都不给,find默认在当前目录及其子目录中 查找,并将所有结果返回到计算机的屏幕上. 例如: $ find .  -name ‘qq*’  -ls 在当前目录及其子目录下查找含有 ‘qq’打头的所有文件,并

linux的3个查找命令

在linux中存在很多个命令可以查看文件的路径,在这里稍微总结一下. 1, find命令 find命令应该时最熟悉的查找命令了,也是linux中最为强大的查找命令.它可以在指定的目录下找到你想要的任何文件.使用方法: find <指定目录> <指定条件>  <指定动作> 如果任何参数不加表示搜索当前目录及其子目录,不过滤任何结果,将他们显示在屏幕上.使用例子: find . -name test 表示搜索当前目录下名为test的文件 find /home/xiang -

Mac上通过Linux命令行批量查找和替换文本

一般在本地电脑上批量替换文本有许多工具可以做到,比如Emeditor,sublime text ,但在linux和mac上相关的编辑器有这个功能的不多,另外大多服务器上都是无图形界面的,因此收集了几条针对linux命令行备忘,实现批量替换文本内容的命令: 批量查找某个目下文件的包含的内容 grep -rn "要找查找的文本" ./ 通过sed批量查找并替换文件内容. sed -i "s/要找查找的文本/替换后的文本/g"grep -rl "要找查找的文本&