端末でシェル関数のコードを印刷する方法は?

端末でシェル関数のコードを印刷する方法は?

私はzshいくつかのシェルスクリプトでいくつかのユーティリティシェル関数を使用して定義しています~/.zshrc。 1つの機能は次のとおりです。

function k.pstree.n {
    if [ "$1" != "" ]
    then
        pstree -p | grep -C3 "$1"
    else
        printf "  Please specify the name of the process you want to show!\n"
    fi
}

このシェル関数のコードを印刷する方法は?

検索とgrepを次のように考えることができます。

find $(pwd) -name "*sh*" -type f -printf "\"%p\"\n" | xargs grep -C5 "k.pstree.n"

しかし、これは私が場所を大まかに知っていると仮定していますが、ここではそうではありません。

答え1

この目的のためのfunctions組み込みコマンドがあります。zsh

functions k.pstree.n

たとえば、私のpreexec機能は次のとおりです。

$ functions preexec

preexec () {
    local cmd=${1:-}
    cmd=${cmd//\\/\\\\} 
    [[ "$TERM" =~ screen* ]] && cmd="S $cmd" 
    inf=$(print -Pn "%n@%m: %3~") 
    print -n "\e]2;$cmd $inf\a"
    cmd_start=$SECONDS 
}

あるいは、whichを使用することの利点は、andでも機能できることです。typeset -fp function_namekshbashyash

ではzsh、関数定義は$functions特殊な連想配列にもあります(キーは関数名で、値は関数本文です)。

答え2

使用できるコマンドは何ですか?

$ which k.pstree.n

関連情報