いくつかの特定のコマンドのドキュメントを繰り返す素晴らしい小さなスクリプトを見つけました。最後の手段としてGoogleで検索してブラウザウィンドウを開きます。ソースはこちら:http://www.commandlinefu.com/commands/view/7581/rtfm-function
rtfm() { help $@ || $@ -h || $@ --help || man $@ || xdg-open "http://www.google.com/search?q=$@"; }
問題は、組み込み命令と部分的に一致するマニュアルを検索すると、実際の命令の代わりにマニュアルが見つけて表示されるという点だ。例:
rtfm tr
trap
明らかに、私が探しているものではなく、コマンドに関するヘルプを見つけて表示します。
help
それでは、私が探しているコマンドとまったく一致しないコマンドを見つけるのを防ぐことができますか?これは可能ですか?
答え1
パラメータがどのタイプのコマンドであるかをテストします。これには、外部コマンドを非表示にするエイリアスと機能を正しく検出できるという利点があります。
rtfm () {
declare x
for x; do
case $(type -t "$x") in
alias) alias "$x";;
keyword) LESS="$LESS+/^SHELL GRAMMAR" man bash;;
function) type "$x";;
builtin) help "$x";;
file)
man -S 1,8 "$x" ||
"$x" --help ||
xdg-open "http://www.google.com/search?q=$x";;
'') # no such command
man "$x" ||
xdg-open "http://www.google.com/search?q=$x";;
esac
done
}
答え2
help
これは部分一致で機能する唯一のコマンドなので、コマンドの順序を変更できます。
rtfm() { "$@" -h || "$@" --help || man "$@" ||
help "$@ "|| xdg-open "http://www.google.com/search?q=$@"; }