シェルキーワード、組み込み関数、カスタム関数を検索するコマンドは何ですか?

シェルキーワード、組み込み関数、カスタム関数を検索するコマンドは何ですか?

私は友人やシェルでコマンドを解析する方法について議論していましたが、bashは次の順序でコマンドを検索すると言いました。

  1. エイリアスリスト
  2. シェルキーワードリスト
  3. ユーザー定義関数のリスト
  4. シェル組み込み関数のリスト
  5. PATH変数で指定されたディレクトリのリスト(左から右)。

私はコマンドを実行してエイリアスを見つけることができることを知っていますalias。 PATH変数の内容はecho $PATHコマンドを使用して見つけることができます。

どのコマンドを使用する必要があるかを教えてください。

  1. すべてのシェルキーワードのリスト
  2. すべてのユーザー定義関数のリスト
  3. シェル組み込み関数のリスト

答え1

compgen以下でも使用できますbash

  • compgen -kキーワードのリスト
  • compgen -bまたはenable組み込み関数のリスト
  • compgen -A functionまたはdeclare -Fリスト機能
  • compgen -aまたはaliasエイリアスのリスト
  • compgen -cコマンドのリスト
  • compgen -v変数のリスト
  • compgen -eまたはexportエクスポートされた変数のリスト

答え2

大きな打撃を受けた場合:

  1. man bash | grep -10 RESERVED予約語のリスト:

    ! Case coproc do done elif else esac fi for function if in select then Until while { } time [[ ]]
  2. declare -Ftypeset -F内容を表示せずに関数名を表示します。

  3. enable組み込みシェルの一覧表示注文する(私の考えではこれではないと思います。機能このように)。これもこうだman builtins

答え3

zshを使う:

PATH= type -m '*'

3.

Bashでキーワードをリストするには、次のようにします。

complete -A keyword :

その後、入力: <Tab><Tab>

組み込み関数の場合上記keywordのように変えてbuiltin、関数の場合推測してみます。

答え4

バッシュから

  • キーワード(予約語):

    compgen -A keyword       # or:  compgen -k
    
  • 関数(実行時に定義):

    compgen -A function      # Only names.
    declare -F               # Only names but prefixed with `declare -f`.
    

    文 -f# 関数定義を完了します。

  • 組み込み機能

    compgen -A builtin       # Only names.
    enable                   # Names prefixed with `enable `
    man builtins             # Only if the correct man package is installed.
    

compgenエイリアス、コマンド、変数、エクスポートなどの他のキーワードもあります。

compgen -A可能なオプションのリストは次のようになります。終わる:

 compgen -A                  # and press Tab (Maybe twice vary by configuration).

関連情報