developer tip

zsh 함수 정의를 표시하는 방법 (예 : bash "type myfunc")?

optionbox 2020. 12. 30. 08:04
반응형

zsh 함수 정의를 표시하는 방법 (예 : bash "type myfunc")?


zsh에서 함수의 정의를 어떻게 표시합니까? type foo정의를 제공하지 않습니다.

bash에서 :

bash$ function foo() { echo hello; }

bash$ foo
hello

bash$ type foo
foo is a function
foo () 
{ 
    echo hello
}

zsh에서 :

zsh$ function foo() { echo hello; }

zsh$ foo
hello

zsh$ type foo
foo is a shell function

zsh 관용구는 whence이고 -f플래그는 함수 정의를 인쇄합니다.

zsh$ whence -f foo
foo () {
    echo hello
}
zsh$

zsh에서는와 type동등하게 정의 되므로을 whence -v계속 사용할 수 type있지만 -f인수 를 사용해야합니다 .

zsh$ type -f foo
foo () {
    echo hello
}
zsh$

그리고 마지막으로, zsh which에서는 whence -c-출력 결과를 csh와 같은 형식으로 인쇄 하므로 which foo동일한 결과가 생성됩니다.

man zshbuiltins 이 모든 것을 위해.


나는 항상 which이것을 위해 사용 했습니다.


tl; dr

declare -f foo  # works in zsh and bash

typeset -f foo  # works in zsh, bash, and ksh

type -f/ whence -f/which 있습니다 이 경우 최적 때문에, 그들의 목적은을 사용하여 명령 형태로보고하는 가장 높은 우선 순위 정의 할 일이 그 이름으로 (당신은 또한 지정하지 않는 -a경우에, 모든 구체적으로보고 반대 - 명령 형태가보고됩니다) 피연산자에 함수로 .

-f옵션은 변경되지 않습니다 . 조회에 셸 기능 포함됩니다 .

별칭와 쉘 키워드는 그래서 손의 경우, 별명이 경우, 쉘 기능보다 더 높은 우선 순위를 가지고 있습니다 foo했다 또한 정의, type -f foo보고서 것이다 별명 정의를.

zsh(처럼 기본적으로 스크립트 별칭을 확장 않습니다 ksh,하지만 bash), 당신은 첫째로 별칭 확장을 설정하는 경우에도, type -f/ whence -f/ which 아직 첫 별칭을보고합니다.


찾고있는 내용이 확실하지 않은 경우 다음을 입력 할 수 있습니다.

functions

정의 된 모든 기능을 보여줍니다.

때때로 많은 것이 있으므로 호출기 프로그램으로 파이프 할 수 있습니다.

functions | less

함수를 정의 해제하려면

unfunction functionname

참조 URL : https://stackoverflow.com/questions/11478673/how-to-show-zsh-function-definition-like-bash-type-myfunc

반응형