特定のコマンドに関する情報を取得する場合は、常にman
コマンドを使用します。しかし、その特定のコマンドがシェル組み込みコマンドである場合、これはあまり役に立ちません。例えば:
man cd
返却値:
No manual entry for cd
私の質問は、man
をすべてのシェル組み込みコマンド(cd
、alias
、history
など)、およびキーワード(if
、while
、[[
、{
など)でも機能させることです。 。)?
help
コマンドを-m
オプションとともに使用すると、組み込みコマンドに関する情報を擬似マンページ形式で表示できます。例えば:
help -m cd | less
cd
コマンドに関する情報を、マニュアルページとほぼ同じ形式で表示します。
このコマンドから始めて、次のように.bashrc
ファイルの1つの関数にman
コマンドをラップできます。
man () {
case "$(type -t -- "$1")" in
builtin|keyword)
help -m "$1" | sensible-pager
;;
*)
command man "$@"
;;
esac
}
この後、man
はすべてのシェル組み込みコマンドおよびキーワードに対しても機能します。例えば:
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>
man bash-builtins
これには、組み込みコマンドのヘルプスニペットが含まれますが、help
に相当するものよりわずかに圧縮された形式です。
開発用POSIXシステム の使用に関するマニュアルページをインストールできます。
Sudo apt-get install manpages-posix-dev
Shellビルトインのmanページを提供します。
$ 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]
...
この解決策は完璧に機能しますが、あなたの質問を読んだときに私が最初に考えたのは、「文字通りコマンドラインの人を使っているのは誰ですか?」誰もがGoogleだけが必要なマニュアルページではないので(無制限のスクロールなどの派手なものが得られるように)?」それから私は、Googleのサイトには通常両方のタイプのコマンドがあるので、すべてのコマンドで統一されたマニュアルページインターフェイスを提供するためにそれらを使用しないでください。したがって、この楽しさが生まれました。
これには、少なくとも1回はまだ検索していないエントリに対してインターネット接続が必要です。また、Ubuntuのデフォルトのインストールにはないこれらの2つの小さなアプリが必要です。
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 manページサイトの負荷を最小限に抑えます。必要なシステムエントリが見つかりました)。これを使用しない場合は、ディスクスペースを回復するためにこれを削除する必要があります。
うまくいけば、残りはかなり簡単です。