![“BSD 通用命令”文档](https://linux22.com/image/1363378/%E2%80%9CBSD%20%E9%80%9A%E7%94%A8%E5%91%BD%E4%BB%A4%E2%80%9D%E6%96%87%E6%A1%A3.png)
我很尴尬地问这个问题,但对于 OS-X 和其他 POSIX 系统上的许多命令,我很难找到所需的文档内置命令。
例如,如果我想知道命令-P
选项的作用cd
,我会期望man cd
告诉我,但不幸的是,这让我想到了可怕的“BSD 通用命令”页。
这些命令中的许多(全部?)都不支持--help
选项,因此我能做的最好的事情就是通过提供无效选项来引发简洁的使用信息。例如:
~ $ cd --tell-me-something-I-didnt-know-damn-you
-bash: cd: --: invalid option
cd: usage: cd [-L|-P] [dir]
我发现简单命令部分POSIX 标准,这似乎很有用,但我感觉我缺少了一些基本的东西。这应该不难。
获取内置命令的详细使用信息的正确方法是什么?
答案1
一个简单的方法来获得内置命令的帮助,而不需要仔细阅读 shell 的手册页,方法是help
:
$ help cd
cd: cd [-L|[-P [-e]]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
HOME shell variable.
The variable CDPATH defines the search path for the directory containing
DIR. Alternative directory names in CDPATH are separated by a colon (:).
A null directory name is the same as the current directory. If DIR begins
with a slash (/), then CDPATH is not used.
If the directory is not found, and the shell option `cdable_vars' is set,
the word is assumed to be a variable name. If that variable has a value,
its value is used for DIR.
Options:
-L force symbolic links to be followed
-P use the physical directory structure without following symbolic
links
-e if the -P option is supplied, and the current working directory
cannot be determined successfully, exit with a non-zero status
The default is to follow symbolic links, as if `-L' were specified.
Exit Status:
Returns 0 if the directory is changed, and if $PWD is set successfully when
-P is used; non-zero otherwise.
答案2
cd
是一个内置的 shell,你可以通过输入以下命令来查看:type CMD
$ type cd
cd is a shell builtin
有关 shell 内置命令的文档位于 shell 手册页中, 嘘(1),重击(1), 和bash 内置命令(1),标题下内置命令,Shell 内置命令, 或者Bash 内置命令; 例如:
光盘[-L| [-P[-e]]] [目录]
将当前目录更改为目录. 变量
HOME
是默认的目录. 变量CDPATH
定义包含目录的搜索路径目录. 替代目录名称CDPATH
用冒号 ( ) 分隔:
。空目录名CDPATH
与当前目录相同,即“.
“。 如果目录 以斜线 (/
) 开头,然后CDPATH
未使用。-P
选项表示使用物理目录结构而不是遵循符号链接(另请参阅-P
选择set
内置命令);-L
选项强制遵循符号链接。如果-e
选项提供-P
,并且成功更改目录后无法成功确定当前工作目录,cd
将返回不成功状态。-
相当于$OLDPWD
. 如果来自CDPATH
被使用,或者-
是第一个参数,并且目录更改成功,则将新工作目录的绝对路径名写入标准输出。如果目录更改成功,则返回值为 true;否则,返回值为 false。