linux - 在 info bash 中找不到 'date' 命令的描述 - 找到可从 shell 调用的所有命令的列表

标签 linux macos bash shell info

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

5年前关闭。




Improve this question




我首先要提到这一点——这个问题的目的真的是为了加强我对 bash 和 info bash 的理解。页面,而不是获取有关 date 命令功能的具体答案。

我找不到关于 date 的任何提及来自 info bash 的以下索引的命令手动的:

  • 内置索引:: Bash 内置命令的索引。
  • 保留字索引:: Bash 保留字索引。
  • 变量索引::快速引用可帮助您找到
    你想要的变量。
  • 函数索引:可绑定(bind) Readline 函数的索引。

  • 但是,我可以使用 info date 获取有关日期函数的信息。 .该页面似乎是 BSD 通用命令手册的一部分,但我无法找到该手册的索引页面 - 如果我通过输入“u”进入包含节点,这会将我带到“dir”页面而不是我所期望的一般命令索引。

    我在这里主要担心的是,如果我找不到有关 date 的信息内的命令 info bash ,然后在 info bash 中没有列出哪些其他命令?是否有我可以在 Bash 中使用的所有命令的完整列表?

    最佳答案

    info bashman bash只记录 Bash 自己的特性。

    外部实用程序,例如 date与 Bash 本身无关 ,即使您可以从 Bash 调用它们。

  • 对于任何给定的外部实用程序,您都可以在其特定的 man 中找到文档。和 info页面(如果已安装),正如您所发现的。
  • 使问题变得困惑的是 Bash 具有所谓的内置函数,它们的外观和行为在许多方面都类似于外部实用程序 - 那些有具体的帮助主题,你可以 使用 help 调用 ;例如,help read ,但您也可以找到它们 man bash在标题下 SHELL BUILTIN COMMANDS .
    此外,一些命令名称,例如echo , 作为 Bash 内置程序和外部实用程序 ( /bin/echo ) 存在。

  • 虽然 只是info (不带参数)会显示一个 外部实用程序列表,通常在标题 Individual utilities ,还有问题 ;取决于您的系统:
  • 该列表可能不完整,或分布在多个位置。
  • 该文档可能不涉及系统上安装的实际实用程序。
  • 例如,在 OSX 上 info主题记录了 GNU 核心实用程序,而 OSX 主要带有 BSD 实用程序。
  • 但是,如果您的系统是使用 GNU 实用程序(这是规范)和 info 的 Linux 发行版。命令是 bash 附带的命令,你可能没事。
  • 请参阅下面的命令,这些命令允许您在 $PATH 中查找所有外部实用程序。 .
  • 获取外部实用程序列表的另一种方法是咨询 POSIX 强制的实用程序集 ;请注意,此列表只是安装在大多数现代平台上的实用程序集的一个子集;类似地,单个实用程序描述通常仅描述该实用程序的给定平台版本的标准化子集,因为大多数实用程序实现了非标准扩展:
  • 转至 Shell & Utilities: Detailed Toc并搜索标题 Utilities (作为完整标题),其中列出了 POSIX 兼容系统必须具有的所有外部实用程序。我找不到按名称列出所有实用程序的页面的直接链接。
  • POSIX 还强制要求符合 POSIX 的 shell 必须实现的内置函数(内置实用程序)(其中 Bash 内置函数是超集):
  • Built-in utilities
  • Special built-in utilities


  • 附加信息:
  • 查看给定命令是否是内置命令 ,使用,例如:

  •  $ type read
     read is a shell builtin
    
  • 查看所有形式的命令 , 使用选项 -a ,例如:

  •  $ type -a read
     read is a shell builtin
     read is /usr/bin/read
    

    如何在您的 $PATH 中查找所有(外部)实用程序:
  • 以下命令将输出 $PATH 中所有可执行文件的列表 (这可能是一个很长的 list );另请注意,该列表通常包括自定义安装的实用程序;该列表将包含 完整路径,按目录分组 :
  • 该命令查找可由 o 执行的文件。 (其他,其余部分)安全主体,所有预装的实用程序都应该是;可以想象,还有其他实用程序具有仅适用于 u 的权限属性。和/或 g主要的。

  • printf '%s' "$PATH" | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm -o=x
    
  • 如果你想要一个 纯可执行名称的排序列表 ,使用:

  • printf '%s' "$PATH" | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm -o=x |
      awk -F/ '{ print $NF }' | sort -u
    
  • 以上仅列出唯一名称; $PATH 中的多个目录中可能存在具有相同文件名的可执行文件的不同重复项(在这种情况下,目录在 $PATH 中排在第一位的人“获胜”); 查看重复项列表,以出现次数为前缀 ,使用:

  • printf '%s' "$PATH" | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm -o=x |
      awk -F/ '{ print $NF }' | sort | uniq -c | grep -v ' *1'
    

  • 对于任何有重复的给定名称,您可以使用 which -a <name>查看所有重复项的完整路径。


  • 最后,标签完成 可以在 中提供帮助发现命令 :
  • 类型 man并重复按 Tab 键列出/循环所有命令;指定命令前缀 - 例如,man dat - 仅列出/循环以该前缀开头的命令(确切行为取决于您的 readline 配置)。
  • 默认情况下,这不适用于 info (至少在我从 Bash 尝试过的 OSX 和 Ubuntu 系统上)。
  • 这也适用于开始键入要调用的命令名称。
  • 但是,这需要至少输入一个字母,这将匹配限制为名称以该字母开头的命令。
  • 要发现给定文件夹中的所有可执行文件,请使用:
  • ./<tab>在当前文件夹中。
  • /usr/bin/<tab> ,例如,在特定文件夹中。
  • 关于linux - 在 info bash 中找不到 'date' 命令的描述 - 找到可从 shell 调用的所有命令的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35684508/

    相关文章:

    linux - iptables 取消禁止 msn 机器人(IP 范围)

    linux - 您无权访问 amazon linux 上此服务器上的 `phpmyadmin`

    windows - Windows 上的 Mac 编译器

    linux - 如何在 bash 中将多个结果从一个命令发送到另一个命令?

    bash - 退出使用 $() 的 bash 脚本

    java - 我有一个多线程 JAVA 应用程序在具有 N 个内核的 CPU 上运行(在 Linux 上)但是它只使用第 0 个内核而其余内核处于空闲状态

    linux - X11 和假键盘/鼠标事件

    Excel VBA::在循环中查找函数

    python - 尝试通过 pip install 安装模块时如何修复 "Python quit unexpectedly"?终端崩溃并显示消息 "zsh: abort"

    arrays - bash 中的数组运算符