info bash
また、man bash
Bash独自の機能のみを文書化します。
などの外部ユーティリティdate
は、Bash から呼び出すことはできますが、 Bash 自体とは何の関係もありません。
あなたが発見したように、任意の外部ユーティリティについて、その特定のman
およびinfo
ページ(インストールされている場合)にドキュメントがあります。
問題を混乱させているのは、 Bash には、多くの点で外部ユーティリティのように見えて動作する、いわゆるビルトインがhelp
あることです。などですが、見出しの下にhelp read
もあります。
さらに、一部のコマンド名、たとえばは、 Bash ビルトインと外部ユーティリティ ( )の両方として存在します。man bash
SHELL BUILTIN COMMANDS
echo
/bin/echo
(引数なしで)外部ユーティリティのリストが表示されますが、info
通常は見出しの下にありますが、問題があります。システムに応じて:Individual utilities
リストは不完全であるか、複数の場所にまたがっている可能性があります。
ドキュメントは、システムにインストールされている実際のユーティリティを参照していない場合があります。
- たとえば、OSX では
info
トピックにGNUコア ユーティリティが記載されていますが、OSXにはほとんどの場合BSDユーティリティが付属しています。
ただし、システムがGNUユーティリティ (標準) を使用するLinux ディストリビューションであり、コマンドが に付属のコマンドである場合は、問題ない可能性があります。info
bash
内のすべての外部ユーティリティを検索できるコマンドについては、以下を参照してください$PATH
。
外部ユーティリティのリストを取得する別の方法は、一連の POSIX 必須ユーティリティを参照することです。このリストは、ほとんどの最新のプラットフォームにインストールされている一連のユーティリティのサブセットにすぎないことに注意してください。同様に、個々のユーティリティの説明は通常、特定のプラットフォームのバージョンのそのユーティリティの標準化されたサブセットのみを説明します。これは、ほとんどのユーティリティが非標準の拡張機能を実装しているためです。
- Shell & Utilities: Detailed Tocに移動し、見出し (完全な見出しとして) を検索します。この見出しには、POSIX 準拠のシステムに必要な
Utilities
すべての外部ユーティリティがリストされています。すべてのユーティリティを名前別にリストしたページへの直接リンクが見つかりませんでした。
- POSIX は、POSIX 準拠のシェルが実装する必要があるビルトイン(ビルトイン ユーティリティ)も義務付けてい ます (そのうち、Bash ビルトインはスーパーセットです)。
追加情報:
- 特定のコマンドがbuiltinかどうかを確認するには、次のように使用します。
$ type read
read is a shell builtin
- command のすべての形式を表示するには、 option を使用します
-a
。次に例を示します。
$ type -a read
read is a shell builtin
read is /usr/bin/read
ですべての (外部) ユーティリティを見つける方法$PATH
:
printf '%s' "$PATH" | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm -o=x
- 単なる実行可能ファイル名のソートされたリストが必要な場合は、次を使用します。
printf '%s' "$PATH" | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm -o=x |
awk -F/ '{ print $NF }' | sort -u
- 上記には一意の名前のみがリストされています。同じファイル名を持つ実行可能ファイルの別個の複製が複数のディレクトリに存在する可能性があります (この場合、ディレクトリが"wins"で最初に
$PATH
来るもの)。重複のリストを表示するには、その出現回数を前に付けて、次を使用します。$PATH
printf '%s' "$PATH" | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm -o=x |
awk -F/ '{ print $NF }' | sort | uniq -c | grep -v ' *1'
- 重複のある名前
which -a <name>
については、すべての重複の完全なパスを表示するために使用できます。
最後に、タブ補完はコマンドを見つけるのに役立ちます: