在信息 bash 中找不到 'date' 命令的描述 - 查找可从 shell 调用的所有命令的列表
Can't find description for 'date' command in info bash - find a list of all commands callable from the shell
我会先提到这个 - 这个问题的目的实际上是加强我对 bash 和 info bash
页面的理解,而不是获得有关 date 命令功能的具体答案.
我无法从 info bash
手册的以下索引中找到 任何 提到的 date
命令:
- 内置索引:: Bash 内置命令的索引。
- 保留字索引:: Bash 保留字的索引。
- 变量索引::快速参考帮助您找到
你想要的变量。
- 函数索引::可绑定Readline函数的索引。
但是,我可以使用 info date
获取有关日期函数的信息。此页面似乎是 BSD 通用命令手册的一部分,但我无法找到该手册的索引页 - 如果我通过键入 'u' 转到包含节点,这会将我带到 'dir'页面而不是我期望的一般命令索引。
我主要担心的是,如果我在 info bash
中找不到有关 date
命令的信息,那么还有哪些其他命令未在 info bash
中列出? Bash?
中是否有我可以使用的所有命令的完整列表
info bash
和 man bash
仅记录 Bash 的 自己的 功能。
外部实用程序 例如 date
与 Bash 本身 无关,即使您可以从Bash呼叫他们。
对于任何给定的外部实用程序,您将在其特定的 man
和 info
页面(如果已安装)中找到文档,如您所见。
问题是 Bash 有 so-called builtins 看起来和行为都像外部实用程序在许多方面 - 这些都有特定的帮助主题,您可以使用help
调用这些主题;例如,help read
,但您也可以在 man bash
中的 SHELL BUILTIN COMMANDS
.
标题下找到它们
此外,一些命令名称,例如echo
,存在 both 作为 Bash 内置 和 作为外部实用程序 (/bin/echo
).
虽然 只是 info
(没有参数)将 显示 外部实用程序的列表,通常在标题Individual utilities
下,有问题;取决于您的系统:
列表可能不完整,或者分布在多个位置。
文档可能未提及您系统上安装的实际实用程序。
- 例如,在 OSX 上,
info
主题记录了 GNU 核心实用程序,而 OSX 主要是 附带 BSD 实用程序。
但是,如果您的系统是 Linux 发行版, 使用 GNU 实用程序(这是常态)并且 info
命令是 bash
附带的命令,你可能没问题。
请参阅下文,了解可让您在 $PATH
.
中查找所有外部实用程序的命令
另一种获取外部实用程序列表的方法是参考一组POSIX-mandated实用程序;请注意,此列表只是大多数现代平台上安装的实用程序集的 子集 ;同样,单个实用程序描述通常只会描述 - 标准化 - 子集 给定平台版本的该实用程序,因为大多数实用程序实现非标准 扩展 :
- 转到 Shell & Utilities: Detailed Toc 并搜索标题
Utilities
(作为完整标题),其中列出了所有 外部实用程序 和 POSIX-compliant 系统必须有。我找不到直接 link 到按名称列出所有实用程序的页面。
- POSIX 还要求 builtins(built-in 实用程序)POSIX-compliant shell 必须实现(其中Bash 内置函数是一个 超集 ):
附加信息:
- 要查看给定命令是否为内置,使用,例如:
$ type read
read is a shell builtin
- 要查看命令的所有形式,请使用选项
-a
,例如:
$ type -a read
read is a shell builtin
read is /usr/bin/read
如何在 $PATH
中找到所有(外部)实用程序:
以下命令将输出您的$PATH
中所有可执行文件的列表(这可能是一个很长的列表);另请注意,该列表通常会包含 custom-installed;该列表将包含 完整 路径,按目录 :
分组
- 该命令查找可由
o
(other,其余词)安全主体执行的文件,所有预安装的实用程序都应该是;可以想象,还有其他实用程序仅具有 u
and/or 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
"wins"); 要查看以出现次数为前缀的重复项列表,请使用:
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>
查看所有重复项的完整路径。
最后,tab 完成 可以帮助发现命令:
键入 man
并重复按 Tab 键以列出/循环显示 all 命令;指定命令前缀 - 例如,man dat
- 仅列出/循环使用该前缀的 start 的命令(exac行为取决于您的 readline
配置)。
- 默认情况下,不与
info
一起工作(至少在我试过的OSX和Ubuntu系统上来自 Bash).
这也适用于开始键入命令名称以调用。
- 但是,这需要至少键入一个字母,这将匹配限制为名称以该字母开头的命令。
- 要发现给定文件夹中的所有 可执行文件,请使用:
./<tab>
在当前文件夹中。
/usr/bin/<tab>
,例如,在特定文件夹中。
我会先提到这个 - 这个问题的目的实际上是加强我对 bash 和 info bash
页面的理解,而不是获得有关 date 命令功能的具体答案.
我无法从 info bash
手册的以下索引中找到 任何 提到的 date
命令:
- 内置索引:: Bash 内置命令的索引。
- 保留字索引:: Bash 保留字的索引。
- 变量索引::快速参考帮助您找到 你想要的变量。
- 函数索引::可绑定Readline函数的索引。
但是,我可以使用 info date
获取有关日期函数的信息。此页面似乎是 BSD 通用命令手册的一部分,但我无法找到该手册的索引页 - 如果我通过键入 'u' 转到包含节点,这会将我带到 'dir'页面而不是我期望的一般命令索引。
我主要担心的是,如果我在 info bash
中找不到有关 date
命令的信息,那么还有哪些其他命令未在 info bash
中列出? Bash?
info bash
和 man bash
仅记录 Bash 的 自己的 功能。
外部实用程序 例如 date
与 Bash 本身 无关,即使您可以从Bash呼叫他们。
对于任何给定的外部实用程序,您将在其特定的
man
和info
页面(如果已安装)中找到文档,如您所见。问题是 Bash 有 so-called builtins 看起来和行为都像外部实用程序在许多方面 - 这些都有特定的帮助主题,您可以使用
help
调用这些主题;例如,help read
,但您也可以在man bash
中的SHELL BUILTIN COMMANDS
.
标题下找到它们 此外,一些命令名称,例如echo
,存在 both 作为 Bash 内置 和 作为外部实用程序 (/bin/echo
).
虽然 只是 info
(没有参数)将 显示 外部实用程序的列表,通常在标题Individual utilities
下,有问题;取决于您的系统:
列表可能不完整,或者分布在多个位置。
文档可能未提及您系统上安装的实际实用程序。
- 例如,在 OSX 上,
info
主题记录了 GNU 核心实用程序,而 OSX 主要是 附带 BSD 实用程序。
- 例如,在 OSX 上,
但是,如果您的系统是 Linux 发行版, 使用 GNU 实用程序(这是常态)并且
info
命令是bash
附带的命令,你可能没问题。请参阅下文,了解可让您在
$PATH
. 中查找所有外部实用程序的命令
另一种获取外部实用程序列表的方法是参考一组POSIX-mandated实用程序;请注意,此列表只是大多数现代平台上安装的实用程序集的 子集 ;同样,单个实用程序描述通常只会描述 - 标准化 - 子集 给定平台版本的该实用程序,因为大多数实用程序实现非标准 扩展 :
- 转到 Shell & Utilities: Detailed Toc 并搜索标题
Utilities
(作为完整标题),其中列出了所有 外部实用程序 和 POSIX-compliant 系统必须有。我找不到直接 link 到按名称列出所有实用程序的页面。 - POSIX 还要求 builtins(built-in 实用程序)POSIX-compliant shell 必须实现(其中Bash 内置函数是一个 超集 ):
- 转到 Shell & Utilities: Detailed Toc 并搜索标题
附加信息:
- 要查看给定命令是否为内置,使用,例如:
$ type read
read is a shell builtin
- 要查看命令的所有形式,请使用选项
-a
,例如:
$ type -a read
read is a shell builtin
read is /usr/bin/read
如何在 $PATH
中找到所有(外部)实用程序:
以下命令将输出您的
分组$PATH
中所有可执行文件的列表(这可能是一个很长的列表);另请注意,该列表通常会包含 custom-installed;该列表将包含 完整 路径,按目录 :- 该命令查找可由
o
(other,其余词)安全主体执行的文件,所有预安装的实用程序都应该是;可以想象,还有其他实用程序仅具有u
and/org
主体的权限属性。
- 该命令查找可由
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
"wins"); 要查看以出现次数为前缀的重复项列表,请使用:
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>
查看所有重复项的完整路径。
最后,tab 完成 可以帮助发现命令:
键入
man
并重复按 Tab 键以列出/循环显示 all 命令;指定命令前缀 - 例如,man dat
- 仅列出/循环使用该前缀的 start 的命令(exac行为取决于您的readline
配置)。- 默认情况下,不与
info
一起工作(至少在我试过的OSX和Ubuntu系统上来自 Bash).
- 默认情况下,不与
这也适用于开始键入命令名称以调用。
- 但是,这需要至少键入一个字母,这将匹配限制为名称以该字母开头的命令。
- 要发现给定文件夹中的所有 可执行文件,请使用:
./<tab>
在当前文件夹中。/usr/bin/<tab>
,例如,在特定文件夹中。