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


 
相关文章
|
2月前
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
622 13
|
3月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
442 21
|
3月前
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
linux命令—tree
|
3月前
|
监控 Linux
Linux系统中使用df命令详解磁盘使用情况。
`df`命令是Linux系统管理员和用户监控和管理磁盘空间使用的重要工具。掌握它的基本使用方法和选项可以帮助在必要时分析和解决空间相关问题。简洁但功能丰富,`df`命令确保了用户可以快速有效地识别和管理文件系统的空间使用情况。
215 13
|
1月前
|
监控 Linux Shell
linux命令
常用 Linux 命令汇总
|
3月前
|
Unix Linux
linux命令—cd
`cd` 命令是 Linux/Unix 系统中用于切换工作目录的基础命令。支持相对路径与绝对路径,常用选项如 `-L` 和 `-P` 分别处理符号链接的逻辑与物理路径。实际操作中,可通过 `cd ..` 返回上级目录、`cd ~` 回到家目录,或利用 `cd -` 在最近两个目录间快速切换。结合 Tab 补全和 `pwd` 查看当前路径,能显著提升效率。此外,需注意特殊字符路径的正确引用及脚本中绝对路径的优先使用。
|
3月前
|
Linux
Linux命令拓展:为cp和mv添加进度显示
好了,就这样,让你的Linux复制体验充满乐趣吧!记住,每一个冷冰冰的命令背后,都有方法让它变得热情起来。
241 8
|
2月前
|
Linux C++
每天一个linux命令(8):cp 命令
cp 命令是 Linux 中用于复制文件或目录的命令。它的名字来源于英文单词 copy。这个命令非常常用,特别是在需要备份文件或创建文件副本时。
76 0
|
4月前
|
Ubuntu 搜索推荐 Linux
详解Ubuntu的strings与grep命令:Linux开发的实用工具。
这就是Ubuntu中的strings和grep命令,透明且强大。我希望你喜欢这个神奇的世界,并能在你的Linux开发旅程上,通过它们找到你的方向。记住,你的电脑是你的舞台,在上面你可以做任何你想做的事,只要你敢于尝试。
257 32
|
3月前
|
安全 Linux 定位技术
Linux环境下必备的基础命令概览
以上就是Linux系统中的基本命令和工具,掌握它们就能帮你在Linux世界里游刃有余。这其实就像是学习驾驭一辆新车,熟悉了仪表盘,调整好了座椅,之后的旅程就只需要享受风驰电掣的乐趣了。
90 4