例如,
[fakename]$ type echo
echo is a shell builtin
Run Code Online (Sandbox Code Playgroud)
但是man echo给了我 GNU coreutils 版本的echo. 判断我正在查看的手册页是否正确的最简单方法是什么,即如果我直接调用它,我会得到哪个实用程序?
你不知道,真的。并非没有手册页之外的知识。
对于echo(and printf, and test, ...) 来说,它通常是 shell 内置的,因此您需要了解这一点并阅读 shell 的文档。
(echo众所周知,在不同的实现中是不同的,请改用printf。)
在大多数(如果不是全部)shell 中,您可以使用 来查找某些内容是否是内置的 ,例如will print 。(由 POSIX 指定,但例如Fish也支持它,尽管它是非 POSIXy 的。)在 Bash 中,您可以阅读在线文档,或使用内置命令(这是 Bash 特有的,您需要该命令)知道存在)。type commandtype echoecho is a shell builtintypeman bashhelp
即使该命令不是内置命令,也可能有多个同名命令,这rename是一个著名的例子(请参阅为什么 Debian/Ubuntu 上的重命名实用程序与其他发行版(如 CentOS)上的重命名实用程序不同?)。现在,您的操作系统应该具有实际安装的实用程序的正确手册页,例如在 Debian 中,当命令替代项更改时,“替代项”系统也会更新相应的手册页。但如果您阅读在线手册页,您就需要了解这一点。
许多实用程序都有一个命令行选项,--version它可能会告诉您该命令是什么实现。(但并非几乎所有实用程序都有它。我认为它最初是 GNUism,所以 GNU 实用程序以及那些碰巧复制自定义的实用程序都有它。)在 的情况下,rename它恰好可以区分两种不同的实现:
debian$ rename --version
/usr/bin/rename using File::Rename version 0.20
centos$ rename --version
rename (util-linux-ng 2.17.2)
Run Code Online (Sandbox Code Playgroud)
除此之外,您的系统可能有一个与实用程序同名的别名或函数,通常用于修改实用程序的行为。在这种情况下,手册页中提供的默认值可能不适用。的别名很常见,添加到或 的ls别名也很常见。但也会告诉您是否是别名或函数。-irmmvtype foofoo
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |