それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ヘルプ(help) コマンドで関数マニュアルを調べる使い方

bash の help 機能について

bash の組込の機能については man / info でもいいのですが多すぎて大変。

help コマンドを使います。help でダイレクトに調べられます。

bashシェルスクリプトとしての機能やSHELLとしての機能を見たいときには help を使えば見ることが出来ます。

インターネットではlinux での使い方で調べると man がよく出てきますが、bash の機能を見たいときは help を使うと手軽です。

help は組込コマンド

help は bash のシェルで使うと便利です。bash が起動していたらどこでも使えます。

help 知りたい機能のように引数にキーワードを入れるだけでカンタンです。

help の使い方 例
takuya@Desktop$ help cd
cd: cd [-L|[-P [-e]] [-@]] [dir]
    Change the shell working directory.
(略

help の help

ヘルプの使い方も help には書いてあります。

help と打ち込んだらいくらでも見ることが出来ます。ただしキーワードの指定の仕方には少しコツが必要です

help コマンドを実行した結果
takuya@Desktop$ help
GNU bash, バージョン 4.4.5(1)-release (x86_64-apple-darwin15.6.0)
これらのシェルコマンドは内部で定義されています。`help' と入力して一覧を参照してください。
`help 名前' と入力すると `名前' という関数のより詳しい説明が得られます。
'info bash' を使用するとシェル全般のより詳しい説明が得られます。
`man -k' または info を使用すると一覧にないコマンドのより詳しい説明が得られます。

名前の後にアスタリスク (*) がある場合はそのコマンドが無効になっていることを意味します。

 job_spec [&]                        history [-c] [-d offset] [n] >
 (( expression ))                    if COMMANDS; then COMMANDS; [ el>
 . filename [arguments]              jobs [-lnprs] [jobspec ...] ま>
 :                                   kill [-s sigspec | -n signum | ->
 [ arg... ]                          let 引数 [引数 ...]
 [[ expression ]]                    local [option] name[=value] ...
 alias [-p] [name[=value] ... ]      logout [n]
 bg [job_spec ...]                   mapfile [-d delim] [-n count] [->
 bind [-lpsvPSVX] [-m keymap] [-f >  popd [-n] [+N | -N]
 break [n]                           printf [-v var] format [argument>
 builtin [shell-builtin [arg ...]>   pushd [-n] [+N | -N | dir]
 caller [expr]                       pwd [-LP]
 case WORD in [PATTERN [| PATTERN]>  read [-ers] [-a array] [-d delim>
 cd [-L|[-P [-e]] [-@]] [dir]        readarray [-n count] [-O origin]>
 command [-pVv] command [arg ...]    readonly [-aAf] [name[=value] ..>
 compgen [-abcdefgjksuv] [-o optio>  return [n]
 complete [-abcdefgjksuv] [-pr] [->  select NAME [in WORDS ... ;] do >
 compopt [-o|+o option] [-DE] [nam>  set [-abefhkmnptuvxBCHP] [-o opt>
 continue [n]                        shift [n]
 coproc [NAME] command [redirectio>  shopt [-pqsu] [-o] [optname ...]
 declare [-aAfFgilnrtux] [-p] [nam>  source filename [arguments]
 dirs [-clpv] [+N] [-N]              suspend [-f]
 disown [-h] [-ar] [jobspec ... | >  test [expr]
 echo [-neE] [arg ...]               time [-p] pipeline
 enable [-a] [-dnps] [-f filename]>  times
 eval [arg ...]                      trap [-lp] [[arg] signal_spec ..>
 exec [-cl] [-a name] [command [ar>  true
 exit [n]                            type [-afptP] name [name ...]
 export [-fn] [name[=value] ...] >  typeset [-aAfFgilnrtux] [-p] nam>
 false                               ulimit [-SHabcdefiklmnpqrstuvxPT>
 fc [-e ename] [-lnr] [first] [las>  umask [-p] [-S] [mode]
 fg [job_spec]                       unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COM>  unset [-f] [-v] [-n] [name ...]
 for (( exp1; exp2; exp3 )); do CO>  until COMMANDS; do COMMANDS; do>
 function name { COMMANDS ; } ま>   変数 - 変数の名前とその意味
 getopts optstring name [arg]        wait [-n] [id ...]
 hash [-lr] [-p pathname] [-dt] [n>  while COMMANDS; do COMMANDS; do>
 help [-dms] [pattern ...]           { COMMANDS ; }

(( expression )) のヘルプを見てみます。

まずは、 (( expression )) のヘルプを見てみようと思います。

help⏎ と打ち込むと、閲覧可能ヘルプの一覧が出てきます。この中から ` (( expression )) のヘルプを閲覧したいと思います。

takuya@Desktop$ help

 job_spec [&]                        
 (( expression ))              
# (( expression )) のヘルプを見る:失敗例
$ help  (( expression ))
-bash: 予期しないトークン `(' 周辺に構文エラーがあります

そのまま打ち込むと、(( ))bash の構文として展開されてしまうので、見ることが出来ません。

# クオート処理する
$ help  '(( expression ))'
-bash: help: `(( expression ))' に一致するヘルプ項目がありません。`help help'、`man -k (( expression ))' または `info (( expression ))' を試してください

クオートで囲ってみても、うまく行きません・・・

# キーワードを減らすとうまくいく
$ help  '(('
(( ... )): (( expression ))
    算術式を評価します。

    算術式の規定に基づいて EXPRESSION を評価します。"let EXPRESSION"
    と等価です。

    終了ステータス:
    EXPRESSION の評価値が 0 の場合は 1、それ以外は 0 を返します。

このように、help⏎ で出てきたキーワードから、少し減らすとうまく表示されることが多いようです。

bash の変数についてのヘルプを見てみる

bash には各種変数が有り、そのなかでシェル特有なものが紹介されています。

bash 特有の変数は BASH_XXX のように BASH が接頭詞としてついています。それらは info bash で見ることが出来ます。

bash の変数についての解説を見てみる。
takuya@Desktop$ help var
variables: 変数 - 変数の名前とその意味
    通常の変数名とその使用法。

    BASH_VERSION    Bashのバージョン情報。
    CDPATH  `cd`の引数として与えられたディレクトリを検索する際に
            使用されるコロン (:) で区切られたディレクトリの一覧。
    GLOBIGNORE  パス名を展開する時に無視されるコロン (:) で区切られた
            ファイル名パターンの一覧。
    HISTFILE    コマンドヒストリが保存されるファイル名。
    HISTFILESIZE    ヒストリファイルに保存することができる最大行数。
    HISTSIZE    実行中のシェルがアクセスできる最大ヒストリ行数。
    HOME    ログインディレクトリの完全パス名。
    HOSTNAME    現在のホスト名。
    HOSTTYPE    このバージョンの Bash を実行している CPU の種類。
    IGNOREEOF   シェルがファイル終了 (EOF) 文字を単一の入力として受け
            取った時の動作を制御します。設定されている場合、空白行
            で EOF 文字をその数連続して受け取った時にシェルを終了
            します (デフォルト 10)。設定が解除された場合、EOF で
            入力が終了することを意味します。
    MACHTYPE    Bash が実行されている現在のシステムを表す文字列。
    MAILCHECK   Bash がメールを確認する頻度 (秒単位)。
    MAILPATH    Bash が新規メールを確認するコロン (:) で区切られた
            ファイル名の一覧。
    OSTYPE  このバージョンの Bash を実行している OS のバージョン。
    PATH    コマンドを検索する際に使用されるコロン (:) で区切ら
            れたディレクトリの一覧。
    PROMPT_COMMAND  プライマリプロンプトが表示される前に毎回実行
            されるコマンド。
    PS1     プライマリプロンプト文字列。
    PS2     セカンダリプロンプト文字列。
    PWD     現在のディレクトリの完全パス名。
    SHELLOPTS   コロン (:) で区切られた有効なシェルオプション一覧。
    TERM    現在の端末種類名。
    TIMEFORMAT  `time' 予約語による時間統計情報の表示書式。
    auto_resume null で無い場合、その行に現れたコマンドは、まず現在停止
            されているジョブから検索されます。それで見つかった場合、
            ジョブがフォアグランドになります。値が `exact' の場合、
            コマンドが停止しているジョブの一覧と厳密に一致していなけ
            ればなりません。値が `substring' の場合、コマンドがジョ
            ブの部分文字列に一致しなければなりません。その他の値の
            場合はコマンドが停止しているジョブの先頭部分に一致しな
            ければなりません。
    histchars   ヒストリ展開とクイック置換を制御する文字。最初の文字が
            ヒストリ展開の文字で通常は `!' です。二番目がクイック
            置換で通常は `^' です。三番目がヒストリのコメントで
            通常は `#' です。
    HISTIGNORE  ヒストリ一覧に保存されるコマンドを決める時に使用される
            コロン (:) で区切られたパターンの一覧。

構文についてのヘルプ

for については、構文が複数あるので、それぞれ別個にキーワードで指定し調べる必要があります。

for の ヘルプの例
takuya@Desktop$ help for
for: for NAME [in WORDS ... ] ; do COMMANDS; done
    リストの各要素に対してコマンドを実行します。

    `for' ループではリストの各要素に対して一連のコマンドを実行します。
    `in WORDS ...;' が存在しない場合、`in "$@"' であると見なされます。
    WORDS の要素が NAME の値として代入され COMMANDS が実行されます。

    終了ステータス:
    最後に実行したコマンドのステータスを返します。
C言語スタイルの for (( )) のヘルプ
takuya@Desktop$ help 'for (('
for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done
    算術 for ループ

    以下と等価です。
        (( EXP1 ))
        while (( EXP2 )); do
            COMMANDS
            (( EXP3 ))
        done
    EXP1、EXP2、および EXP3 は数式です。いずれかの数式を省略した場合、
    値が 1 であるとして評価されます。

    終了ステータス:
    最後に実行したコマンドのステータスを返します。

help で見られないモノ

help では主に関数 とくに組込関数 の使い方が見られます。

条件分岐の書式や、コマンドの書式については、特に触れられていませんでした。

パターンや、条件書式や演算子などの情報については info bash または man bash を使うことで見ることが出来ます。