2

info bash最初にこれについて言及します。この質問の目的は、date コマンドの機能に関する具体的な回答を得ることではなく、bash とページに関する私の理解を深めることです。

マニュアルの次のインデックスから、コマンドに関する言及を見つけることができませんdateinfo bash

  • Builtin Index:: Bash 組み込みコマンドのインデックス。
  • 予約語インデックス:: Bash 予約語のインデックス。
  • Variable Index:: クイック リファレンスは、必要な変数を見つけるのに役立ちます。
  • Function Index:: バインド可能な Readline 関数のインデックス。

ただし、 で日付関数に関する情報を取得できますinfo date。このページは BSD 一般コマンド マニュアルの一部のようですが、このマニュアルのインデックス ページが見つかりません。「u」と入力してノードを含むノードに移動すると、私が期待する一般的なコマンドインデックス。

dateここでの私の主な関心事は、内でコマンドに関する情報が見つからない場合、内info bashにリストされていない他のコマンドは何かということinfo bashです。Bash 内で使用できるすべてのコマンドの包括的なリストはありますか?

4

1 に答える 1

2

info bashまた、man bashBash独自の機能のみを文書化します。

などの外部ユーティリティdateは、Bash から呼び出すことはできますが、 Bash 自体とは何の関係もありません。

  • あなたが発見したように、任意の外部ユーティリティについて、その特定のmanおよびinfoページ(インストールされている場合)にドキュメントがあります。

  • 問題を混乱させているのは、 Bash には、多くの点で外部ユーティリティのように見えて動作する、いわゆるビルトインhelpあることです。などですが、見出し下にhelp readもあります。 さらに、一部のコマンド名、たとえばは、 Bash ビルトイン外部ユーティリティ ( )の両方として存在します。man bashSHELL BUILTIN COMMANDS
    echo/bin/echo

(引数なしで)外部ユーティリティリスト表示されますがinfo通常は見出しの下にありますが、問題があります。システムに応じて:Individual utilities

  • リストは不完全であるか、複数の場所にまたがっている可能性があります。

  • ドキュメントは、システムにインストールされている実際のユーティリティを参照していない場合があります。

    • たとえば、OSX ではinfoトピックにGNUコア ユーティリティが記載されていますが、OSXにはほとんどの場合BSDユーティリティが付属しています。
  • ただし、システムがGNUユーティリティ (標準) を使用するLinux ディストリビューションであり、コマンドが に付属のコマンドである場合は、問題ない可能性があります。infobash

  • 内のすべての外部ユーティリティを検索できるコマンドについては、以下を参照してください$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:

  • 次のコマンドは、ファイル内のすべての実行可能ファイルのリストを出力します$PATH(これは長いリストになる可能性があります)。また、リストには通常、カスタム インストールされたユーティリティが含まれることにも注意してください。リストには、ディレクトリごとにグループ化されたフルパスが含まれます。

    • oこのコマンドは、セキュリティ プリンシパル(その他、残りの部分)によって実行可能なファイルを探します。これは、プリインストールされているすべてのユーティリティがそうである必要があります。uおそらく、 and/orgプリンシパルに対してのみアクセス許可属性を持つ追加のユーティリティがあります。
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>については、すべての重複の完全なパスを表示するために使用できます。

最後に、タブ補完はコマンドを見つけるのに役立ちます:

  • Tabキーを繰り返し押して、すべてのコマンドmanをリスト/循環します。コマンド プレフィックスを指定します。たとえば、そのプレフィックスで始まるコマンドのみを一覧表示または循環します (正確な動作は構成によって異なります)。man datreadline

    • デフォルトでは、これは機能しませんinfo少なくとも、Bashからこれを試したOSXおよびUbuntuシステムでは)。
  • これは、呼び出すコマンド名の入力を開始するときにも機能します。

    • ただし、少なくとも 1 つの文字を入力する必要があるため、その文字で名前が始まるコマンドに一致が制限されます。
    • 特定のフォルダー内の すべての実行可能ファイルを検出するには、次を使用します。
      • ./<tab>現在のフォルダー内。
      • /usr/bin/<tab>、たとえば、特定のフォルダー内。
于 2016-02-28T17:30:21.237 に答える