UNIX/Linuxの部屋 helpコマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド help Bash の内部コマンドに関するヘルプ・マニュアルを表示する。Bash の内部コマンド。 このエントリーをはてなブックマークに追加

最終更新


help コマンドは UNIX/Linux で使用される Bash コマンドの、内部コマンドに関するヘルプ・マニュアルを表示するためのコマンドである。help コマンドも bash の内部コマンドであるため、bash のみでしか使用できない。



help コマンドの基本的な使い方
下記のようにすることで、内部コマンドに関する説明・書式が表示される。
% help [内部コマンド]

下記は内部コマンド "jobs" のヘルプの例である。
% help jobs
jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
    Display status of jobs.

    Lists the active jobs.  JOBSPEC restricts output to that job.
    Without options, the status of all active jobs is displayed.

    Options:
      -l        lists process IDs in addition to the normal information
      -n        list only processes that have changed status since the last
        notification
    (略)

引数に渡すコマンド名は複数指定可能で、指定されたすべてのコマンドを表示する。
% help if jobs wait

コマンド名は前方一致でもよい。下記で "j" から始まるすべてのコマンドを表示する。
% help j

help コマンドを引数なしで使用すると、全ての Bash 内部コマンドの一覧を表示する。
% help
(略)
 job_spec [&]                                      history [-c] [-d offset] [n] or history -anrw >
 (( expression ))                                  if COMMANDS; then COMMANDS; [ elif COMMANDS; t>
 . filename [arguments]                            jobs [-lnprs] [jobspec ...] or jobs -x command>
 :                                                 kill [-s sigspec | -n signum | -sigspec] pid |>
 [ arg... ]                                        let arg [arg ...]
 [[ expression ]]                                  local [option] name[=value] ...
 alias [-p] [name[=value] ... ]                    logout [n]
 bg [job_spec ...]                                 mapfile [-n count] [-O origin] [-s count] [-t]>
 bind [-lpvsPVS] [-m keymap] [-f filename] [-q n>  popd [-n] [+N | -N]
 break [n]                                         printf [-v var] format [arguments]
 builtin [shell-builtin [arg ...]]                 pushd [-n] [+N | -N | dir]
 caller [expr]                                     pwd [-LP]
 case WORD in [PATTERN [| PATTERN]...) COMMANDS >  read [-ers] [-a array] [-d delim] [-i text] [->
 cd [-L|-P] [dir]                                  readarray [-n count] [-O origin] [-s count] [->
 command [-pVv] command [arg ...]                  readonly [-af] [name[=value] ...] or readonly >
 compgen [-abcdefgjksuv] [-o option]  [-A action>  return [n]
 complete [-abcdefgjksuv] [-pr] [-DE] [-o option>  select NAME [in WORDS ... ;] do COMMANDS; done>
 compopt [-o|+o option] [-DE] [name ...]           set [--abefhkmnptuvxBCHP] [-o option-name] [ar>
 continue [n]                                      shift [n]
 coproc [NAME] command [redirections]              shopt [-pqsu] [-o] [optname ...]
 declare [-aAfFilrtux] [-p] [name[=value] ...]     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] [name ...]      times
 eval [arg ...]                                    trap [-lp] [[arg] signal_spec ...]
 exec [-cl] [-a name] [command [arguments ...]] >  true
 exit [n]                                          type [-afptP] name [name ...]
 export [-fn] [name[=value] ...] or export -p      typeset [-aAfFilrtux] [-p] name[=value] ...
 false                                             ulimit [-SHacdefilmnpqrstuvx] [limit]
 fc [-e ename] [-lnr] [first] [last] or fc -s [p>  umask [-p] [-S] [mode]
 fg [job_spec]                                     unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COMMANDS; done      unset [-f] [-v] [name ...]
 for (( exp1; exp2; exp3 )); do COMMANDS; done     until COMMANDS; do COMMANDS; done
 function name { COMMANDS ; } or name () { COMMA>  variables - Names and meanings of some shell v>
 getopts optstring name [arg]                      wait [id]
 hash [-lr] [-p pathname] [-dt] [name ...]         while COMMANDS; do COMMANDS; done
 help [-dms] [pattern ...]                         { COMMANDS ; }

help コマンドのオプション
help コマンドのオプションで、出力する情報を変えることができる。
▷ -d オプション: 1行で簡単な説明を表示する
% help -d jobs
jobs - Display status of jobs.
▷ -s オプション: 1行で簡単な文法を説明する
% help -s jobs
jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
▷ -m オプション: man 形式で表示する (-m ありなしで情報量は同じ)

全ての help を表示する方法
ドキュメントには書かれていないが、下記のように空文字列を渡すことで、全ての内部コマンドについて表示がなされる模様である。
% help ""
→ すべての内部コマンドについてマニュアルを表示する
% help -d ""
→ すべての内部コマンドについて、1行説明を表示する
% help -s ""
→ すべての内部コマンドについて、1行文法説明を表示する

help コマンドが便利な理由
当ページ管理人としては bash 使いの人にとっては help コマンドは非常に便利なコマンドであると考える。

理由その1。man コマンドにおいて、man jobs とすると下記のような長大な bash 内部コマンドマニュアルが表示され、そこから狙いのコマンドに到達するのが非常に面倒である。
BASH_BUILTINS(1)                                              BASH_BUILTINS(1)

NAME
       bash,  :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen, com-
       plete, compopt, continue, declare, dirs, disown, echo, enable,  eval,  exec,  exit,
       export,  false,  fc,  fg,  getopts,  hash,  help,  history, jobs, kill, let, local,
       logout, mapfile, popd, printf, pushd, pwd,  read,  readonly,  return,  set,  shift,
       shopt, source, suspend, test, times, trap, true, type, typeset, ulimit, umask, una-
       lias, unset, wait - bash built-in commands, see bash(1)
(略)

理由その2。man printf とすると /usr/bin/printf コマンドのマニュアルが表示されるものの、実際に printf を実行すると bash 内部コマンドの printf が実行されるため、混乱を招く。

よって、調べたいコマンドが bash の内部コマンドであることがわかっている場合は、man コマンドより先に help コマンドで調べるのがよいと考える。

関連コマンド
help コマンドで調べることができるのはあくまで bash の内部コマンドのみである。それ以外のマニュアルを調べたい場合は man コマンドや info コマンドを使うこと。