すべてのShellビルトインは同じマニュアルページを共有します。
BUILTIN(1) BSD General Commands Manual BUILTIN(1)
NAME
builtin, !
等.
次に、Shellビルトインが何であるかを説明する短いテキストと、次のようなリストがあります。
Command External csh(1) sh(1)
! No No Yes
% No Yes No
しかし、man grep
を実行すると、次のようなセクションが表示されます
等.
Shellビルトインには、-A
や-r
などの独自の履歴、説明、および引数はありませんか?なぜそれがマニュアルページに記載されていないのですか、それらを正しく効率的に使用する方法をどのように学ぶのですか?
ビルトインはシェルの一部だからです。彼らが持っているバグや履歴は、シェル自体のバグや履歴です。これらは独立したコマンドではなく、組み込みのシェルの外部には存在しません。
同等の機能は、少なくともbash
の場合、help
コマンドです。例えば:
$ help while
while: while COMMANDS; do COMMANDS; done
Execute commands as long as a test succeeds.
Expand and execute COMMANDS as long as the final command in the
`while' COMMANDS has an exit status of zero.
Exit Status:
Returns the status of the last command executed.
すべてのbashビルトインにはhelp
ページがあります。 help
自体:
$ help help
help: help [-dms] [pattern ...]
Display information about builtin commands.
Displays brief summaries of builtin commands. If PATTERN is
specified, gives detailed help on all commands matching PATTERN,
otherwise the list of help topics is printed.
Options:
-d output short description for each topic
-m display usage in pseudo-manpage format
-s output only a short usage synopsis for each topic matching
PATTERN
Arguments:
PATTERN Pattern specifiying a help topic
Exit Status:
Returns success unless PATTERN is not found or an invalid option is given.
@mikeservのsed
スクリプトに触発されて、Perlを使用してマニュアルページの関連セクションを出力する小さな関数を次に示します。この行をシェルの初期化ファイル(~/.bashrc
(bashの場合):
manperl(){ man "$1" | Perl -00ne "print if /^\s*$2\b/"; }
次に、manページとセクションの名前を指定して実行します。
$ manperl bash while
while list-1; do list-2; done
until list-1; do list-2; done
The while command continuously executes the list list-2 as long as the last command in the list list-1 returns an exit
status of zero. The until command is identical to the while command, except that the test is negated; list-2 is exe‐
cuted as long as the last command in list-1 returns a non-zero exit status. The exit status of the while and until
commands is the exit status of the last command executed in list-2, or zero if none was executed.
$ manperl grep SYNOPSIS
SYNOPSIS
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
$ manperl rsync "-r"
-r, --recursive
This tells rsync to copy directories recursively. See also --dirs (-d).
各シェルには、独自の組み込みのセットがあります。共通点はありますが、それぞれに文書化する必要がある独自の特性があります。
LinuxやFreeBSD(およびFreeBSDから継承するOSX)のようなシステムで、各シェルが個別のパッケージとして提供されている場合、組み込みのマニュアルページはありません。代わりに、各ビルトインはシェルのマニュアルページに記載されています。したがって、bashのkill
ビルトインのドキュメントについてはbashのマニュアルページを、ダッシュのkill
ビルトインのドキュメントについてはダッシュのマニュアルページをお読みください。kill
スタンドアロンユーティリティ。
引数が組み込みの名前の場合、manページの代わりにbashの内部ドキュメントを表示するman
関数については、 bash組み込みコマンドの個別のmanページを取得できますか? を参照してください。
Shellビルトインのmanページを提供するUNIXバリアントがあります—実際、ほとんどの商用バリアントが提供しています。システムには単一のシェルまたは既知のシェルのセットが付属しているため、これは実現可能です。 manページでは、シェル間の違いについて説明しています。たとえば、 fg(1)
man page on Solaris 1 には、sh
、ksh
、およびcsh
のセクションがあります。 fg(1)
man page on AIX 7.1 は「Korn Shell」と「POSIX Shell」を参照していますが、それらについて一緒に説明しています(たまたま、fg
とまったく同じ機能をサポートしています) )。 fg(1)
のTru64 5.0のマニュアルページ は、組み込みのkshについて説明し、cshユーザーにcsh(1)
のマニュアルページを紹介します。 [〜#〜] sco [〜#〜] シェルは1つしか付属していないようです。これらのオペレーティングシステムでは、他のシェルをアドオンパッケージとしてインストールできます。カスタムシェルを使用する場合、デフォルト以外のシェルを使用する場合、ビルトインのマニュアルページは関連しないことに注意してください。