man
当我想获取有关特定命令的信息时,我总是使用该命令。但是当该特定命令是 shell 内置命令时,这对我没有太大帮助。例如:
man cd
返回:
No manual entry for cd
我的问题是:是否可以让 makeman
适用于所有 shell 内置命令(如、、、cd
等)和关键字(如、、、、等)?alias
history
if
while
[[
{
答案1
命令help
when 与选项一起使用-m
可以以伪手册页格式显示内置命令的相关信息。例如:
help -m cd | less
cd
将以与手册页几乎完全相同的格式显示有关命令的信息。
从此命令开始,您可以将man
命令包装在.bashrc
文件中的一个函数中,如下所示:
man () {
case "$(type -t -- "$1")" in
builtin|keyword)
help -m "$1" | sensible-pager
;;
*)
command man "$@"
;;
esac
}
此后,这man
也适用于所有 shell 内置命令和关键字。例如:
man :
将显示:
NAME
: - Null command.
SYNOPSIS
:
DESCRIPTION
Null command.
No effect; the command does nothing.
Exit Status:
Always succeeds.
SEE ALSO
bash(1)
IMPLEMENTATION
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
答案2
man bash-builtins
这包含内置命令的帮助片段,尽管格式比help
等效的格式稍微简洁一些。
答案3
您可以安装有关使用用于开发的 POSIX 系统作为,
sudo apt-get install manpages-posix-dev
它将为 shell 内置命令提供手册页。
$ type cd
cd is a shell builtin
现在尝试,
$ man cd
CD(P) POSIX Programmer's Manual CD(P)
NAME
cd - change the working directory
SYNOPSIS
cd [-L | -P] [directory]
...
答案4
这个解决方案效果很好,但也有点可笑,因为当我看到你的问题时,我首先想到的是“谁还会在命令行中使用 man?难道不是每个人都会用 Google 搜索他们想要的手册页(这样他们就可以获得无限滚动等花哨的东西)?”。然后我意识到我用 Google 搜索的网站通常都有两种类型的命令,所以为什么不直接使用它们来为所有命令提供统一的手册页界面呢。因此,这个乐趣就诞生了。
这需要互联网连接才能查看您至少一次未查找过的任何条目。它还需要这两个小应用程序,而这两个应用程序在 Ubuntu 的默认安装中是缺失的:
sudo apt-get install tidy html2text
这些不是绝对必要的,但它们确实有助于使它看起来更漂亮一些。Tidy 将清理 HTML,html2text 将把该 html 格式化为格式化文本(这通常非常简单,因为大多数这些网站已经是文本格式,只是包裹在 <pre> 标签中。
现在您需要做的就是将其添加到末尾~/.profile
:
function iman() {
if [ ! -d "/usr/share/iman" ]; then
sudo mkdir -m a=rwx /usr/share/iman
fi
if [ ! -f "/usr/share/iman/$1.html" ]; then
curl "http://unixhelp.ed.ac.uk/CGI/man-cgi?$1"| tidy -n -asxml 2>/dev/null| html2text > "/usr/share/iman/$1.html";
fi
if [ -f "/usr/share/iman/$1.html" ]; then
cat "/usr/share/iman/$1.html";
else
echo "Entry not found."
fi
}
退出并重新登录后,您应该能够输入以下内容:
iman cd
并且它会显示 的手册页cd
。
这使用了一个数据目录 (/usr/share/iman) 来最小化我们的网络要求(因此即使没有连接,它也可以用于您之前已经找到的条目;还可以最小化这个我找到的随机 Linux 手册页站点的负载,其中包含我们想要的系统条目)。如果您不再使用它,您将需要删除它以恢复磁盘空间。
希望剩下的事情就很简单了。