Shell内置命令、外部命令、别名、函数、保留关键字的优先级

在Shell中,有5种可调用的东西:别名(alias)、函数(function)、shell保留关键字、shell内置命令、外部命令。

如果它们同名了,那么优先调用谁呢?可使用type -a cmd查看。

# 内置命令、别名、函数、外部命令
$ alias kill="echo haha"
$ function kill()(echo hehe)

$ type -a kill
kill is aliased to `echo haha'   # 1.别名kill
kill is a function               # 2.函数kill
kill ()
{
    ( echo hehe )
}
kill is a shell builtin      # 3.内置kill
kill is /usr/bin/kill        # 4.外部kill

# 别名、函数、保留关键字、外部命令
$ alias time="echo haha"
$ function time()(echo hehe)  

$ type -a time
time is aliased to `echo haha'  # 1.别名
time is a shell keyword         # 2.保留关键字
time is a function              # 3.函数
time ()
{
    ( echo hehe )
}
time is /usr/bin/time            # 4.外部命令

例如:

# 调用外部命令time
[root@me ~]$ command time echo haha
[root@me ~]$ /usr/bin/time echo haha

# 调用内置命令printf
[root@me ~]$ alias printf="echo hehe"
[root@me ~]$ printf
hehe
[root@me ~]$ builtin printf 'hello'
hello

此外,可以使用反斜线对命令转义,使其跳过当前最高的优先级。但是,反斜线转义的效果可能不会按照预料中顺序的执行,所以最好不要用反斜线转义。

$ \time echo haha

Shell命令的执行优先级的更多相关文章

  1. Shell命令的执行顺序

    shell执行命令的步骤顺序如上图,看起来有些复杂. 当命令行被处理时,每一个步骤都是在Shell的内存里发生的;Shell不会真的把每个步骤的发生显示给你看. 所以,你可以假想这事我们偷窥Shell ...

  2. python 对shell 命令的 执行 逻辑 在一台机器上执行另一台机器的命令; 跨节点 执行命令

    import os l = ['ssh a;scp /data/visitlog/*11* root@d:/data/mapReduceVisitorLog/'] # b c for i in l: ...

  3. Samba远程Shell命令注入执行漏洞

    CVE:CVE-2007-2447 原理: Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh.如果在调用smb.conf中定义的外部脚本时,通过对/bin/s ...

  4. shell命令行执行python(解析json)

    每个脚本都有自己的擅长. 有次实现一个work,使用了shell,php,python看着文件种类多,不方便交接,看着也比较麻烦. 减少文件种类数,也是很有必要的. 遇到的场景:shell程序需要从j ...

  5. python如何在shell命令行执行创建用户命令

  6. Android Java执行Shell命令

    最新内容建议直接访问原文:http://www.trinea.cn/android/android-java-execute-shell-commands/ 主要介绍Android或Java应用中如何 ...

  7. CMake如何执行shell命令

    我在cmake编译后想执行一些特定的shell命令(执行.lcov收集代码覆盖报告等),我又不想写到XX.sh的shell脚本中,如何直接通过CMake执行shell命令呢? 在网上翻江倒海了一下,找 ...

  8. shell脚本--php执行普通shell命令

    这里只演示一些普通的shell命令,一些需要root用户权限执行的命令,请参考:php以root权限执行shell命令 php执行shell命令,可以使用下面几个函数: string system ( ...

  9. shell脚本linux命令连续执行

    shell命令连续执行的三种方式: 1.命令1:命令2:命令3 依次执行命令,无论前一条命令是否执行成功. 2.命令1 && 命令2 && 命令3 前一条命令执行成功后 ...

随机推荐

  1. Python开发还在用virtualenv?不如了解下pipenv...#华为云·寻找黑马程序员#

    又见 Kenneth Reitz 之前公众号写了一篇文章爬虫新宠requests_html 带你甄别2019虚假大学,其中主要是为了介绍模块**requests_html,这个模块的作者还开发了req ...

  2. 为什么QQ能帮你找到失散多年的兄弟?----图论

    编程三分钟的第 44 篇原创文章 为什么qq里"可能认识的人"功能推荐的如此精准? 为什么两个没有什么联系的朋友会相互认识? 一切的背后到底是道德的沦丧,还是人性的扭曲 ? 让我们 ...

  3. mysql 授权用户 主从和备份

    1.授权用户 mysql -uroot -p123qqq...A                     进入数据库 grant   all     on     *.*     to   dc@&q ...

  4. luogu P4065 [JXOI2017]颜色 |随机化+前缀和

    题目描述 可怜有一个长度为 n 的正整数序列 Ai,其中相同的正整数代表着相同的颜色. 现在可怜觉得这个序列太长了,于是她决定选择一些颜色把这些颜色的所有位置都删去. 删除颜色 i 可以定义为把所有满 ...

  5. 大数据之Linux进阶指令

    1.文件内容操作相关命令 cut 根据条件 从命令结果中 提取 对应内容 -c  按字符选取内容 例子:head -2 1.txt | cut -c 5 截取前两行的第五个字符 -d  '分隔符'  ...

  6. python实现十大核心算法(桶排没实例)

    # author:sevenduke # 2019-06-11 # 一.交换排序 # 排序算法的温故:冒泡排序 def dubblesort(arr): for i in range(0, len(a ...

  7. 通过Centreon监控apache、MySQL、Hadoop服务状态

    在上面的章节中,只是简单介绍了Centreon的几个基础监控项,例如添加主机.服务等,这些对于一个监控系统来说是远远不够的,本节将重点介绍对一些扩展服务的监控,也就是对一些常见应用的监控. 一. Na ...

  8. django学习02-模型的使用

    新手做的笔记,很可能会有理解错误的地方.欢迎拍砖. mysite/settings.py的INSTALLED_APPS选项中定义了几个默认的app,又如django.contrib.admin,dja ...

  9. vue中通过.sync修饰符实现子组件修改父组件数据

    vue父子通讯是单向数据流,也就是子组件不能修改父组件的值,但是在一些情况下是需要这样做的. 先看官方文档: 接下来举例实现 1.实现一个双向数据绑定,子组件改变的时候,父组件也在改变 父组件 < ...

  10. 设置td中的值自动换行

    style="word-wrap:break-word;word-break:break-all;"注意要设置td的宽度,否则没有用word-wrap:设置或检索当当前行超过指定容 ...