나는 zsh
일부 셸 스크립트에서 일부 유틸리티 셸 함수를 사용하고 정의하고 있는데 그 중 일부는 에서 호출되므로 ~/.zshrc
이러한 함수의 위치를 모른다고 가정해 보겠습니다. 한 가지 기능은 다음과 같습니다.
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_name
ksh
bash
yash
에서 zsh
함수 정의는 $functions
특수 연관 배열에서도 찾을 수 있습니다(키는 함수 이름이고 값은 함수 본문입니다).
답변2
사용할 수 있는 명령은 무엇입니까?
$ which k.pstree.n