查找 shell 关键字、内置函数和用户定义函数的命令是什么?

查找 shell 关键字、内置函数和用户定义函数的命令是什么?

我正在和我的朋友讨论如何在 shell 中解析命令,他告诉我 bash 按以下顺序搜索命令

  1. 别名列表
  2. shell 关键字列表
  3. 用户定义函数列表
  4. shell内置函数列表
  5. PATH 变量中指定的目录列表(从左到右)。

我知道可以通过发出命令找到别名alias。可以使用echo $PATH命令找到 PATH 变量内容。

您能告诉我需要使用哪些命令吗?

  1. 列出所有 shell 关键字
  2. 列出所有用户定义的函数
  3. shell 内置函数列表

答案1

您还可以使用compgenbash

  • compgen -k列出关键词
  • compgen -benable列出内置函数
  • compgen -A functiondeclare -F列出函数
  • compgen -aalias列出别名
  • compgen -c列出命令
  • compgen -v列出变量
  • compgen -e或者export列出导出的变量

答案2

在重击中:

  1. man bash | grep -10 RESERVED列出保留字:

    ! case coproc do done elif else esac fi for function if in select then Until while { } time [[ ]]
  2. declare -Ftypeset -F显示函数名称而不显示其内容。

  3. enable列出内置 shell命令(我不认为这些是功能如此)。也是如此man builtins

答案3

使用 zsh:

PATH= type -m '*'

都会告诉你3.

在 bash 中,要列出关键字,您可以执行以下操作:

complete -A keyword :

然后输入: <Tab><Tab>

对于内置函数,请替换keywordbuiltin上面的内容,对于函数,我会让您猜测。

答案4

在bash中

  • 关键字(保留字):

    compgen -A keyword       # or:  compgen -k
    
  • 函数(在执行时定义):

    compgen -A function      # Only names.
    declare -F               # Only names but prefixed with `declare -f`.
    

    声明 -f # 完整的函数定义。

  • 内置函数

    compgen -A builtin       # Only names.
    enable                   # Names prefixed with `enable `
    man builtins             # Only if the correct man package is installed.
    

还有一些其他关键字compgen:别名、命令、变量、导出等。

compgen -A可以通过以下方式找到可能选项的列表完成:

 compgen -A                  # and press Tab (Maybe twice vary by configuration).

相关内容