GNU/Linux >> Linux の 問題 >  >> Linux

zsh で関数のソースを見つける

今日これを行う必要があり、 whence -v が見つかりました 関数定義を含むファイルを出力します。

$ whence -v function_name
function_name is a shell function from /path/to/file

まず、関数は function なしで定義できます キーワードなので、より良い検索になります

grep 'cp()' .*

.zshrc などのファイルを検索します と .profile などなど。それでも何も見つからない場合は、zsh によってロードされたさまざまなファイルを確認することもできます。 .これらは man zsh の最後にリストされています :

FILES
       $ZDOTDIR/.zshenv
       $ZDOTDIR/.zprofile
       $ZDOTDIR/.zshrc
       $ZDOTDIR/.zlogin
       $ZDOTDIR/.zlogout
       ${TMPPREFIX}*   (default is /tmp/zsh*)
       /etc/zsh/zshenv
       /etc/zsh/zprofile
       /etc/zsh/zshrc
       /etc/zsh/zlogin
       /etc/zsh/zlogout    (installation-specific - /etc is the default)

デフォルトでは $ZDOTDIR $HOME である必要があります .したがって、このコマンドは問題のあるファイルを見つけるはずです:

grep 'cp()\|cp ()' ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin /etc/zsh/zshenv \
 /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin 

\| を追加しました 関数名と関数自体の間にスペースを入れることもできるためです。最後に、@Dennis は、function を使用する場合は括弧も省略できると指摘しています。 キーワード。したがって、さらに安全にするには、次のようにします。

grep -E 'function cp|cp *\(\)' ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin \
  /etc/zsh/zshenv /etc/zsh/zprofile /etc/zsh/zshrc /etc/zsh/zlogin 

zsh の新しいバージョン (5.4 以降、コミット 34f70c5 に追加) ) $functions_source をサポート zsh/parameter の一部としての配列 モジュール (ドキュメント:man zshmodules ):

<ブロック引用>

functions_source

この読み取り専用の連想配列は、有効な関数の名前を関数のソースを含むファイルの名前にマップします。

すでにロードされているか、絶対パスで自動ロード用にマークされているか、またはパスが「functions -r」で解決されている、自動ロードされた関数の場合 '、これはオートロード用に見つかったファイルで、絶対パスに解決されます。

スクリプトまたはソース ファイルの本体内で定義された関数の場合、これはそのファイルの名前です。この場合、これはそのファイルに最初に使用された正確なパスであり、相対パスである可能性があります。

対話型プロンプトで定義された関数や、パスがまだ解決されていない autoload 関数を含む、その他の関数の場合、これは空の文字列です。ただし、関数が存在する限り、ハッシュ要素は定義済みとして報告されます。このハッシュのキーは、$funcions のキーと同じです。 .

だから、あなたはできる

echo $functions_source[cp]

Linux
  1. クリップボードでHTMLのソースを編集する方法は?

  2. カーネル空間からユーザー空間関数を実行する

  3. ZSH の PATH 変数に新しいエントリを追加する

  1. Linux カーネル ソース ツリーのバージョンはどこにありますか?

  2. 現在の Linux カーネル ソースは何ですか?

  3. POSIX シグナルの発信元を見つける方法

  1. Linuxはインターネットを強化し、EU委員会委員会を確認

  2. Linuxシステム管理者向けの4つのビデオセッション

  3. コマンドによって処理されたソースファイルと同じファイルにリダイレクトしますか?