shell之ZSH 搜索函数定义

wuhuacong 阅读:38 2024-11-01 17:39:52 评论:0

是否有一种机制可以从控制台获取函数定义而无需手动 grep 文件?

我正在寻找一种方法来快速找到已知函数名称的定义。

例如我想知道在哪里定义了“_kill”自动补全函数。

在 ruby​​ 中使用 pry 我可以得到这样的东西:

show-method find

From: app/models/search/object.rb @ line 2:

Number of lines: 7

def self.find(conditions = {}, options = {}) 
  type = extract_object_type 
  raise 'do not call Search::Object directly' if type == 'Object' 
  search_logic = "Search::#{type.camelize}Logic".constantize.new(conditions, options) 
  search_logic.process! 
  search_logic.execute 
end 

请您参考如下方法:

我的以下作品:

$ autoload +X _kill # important step 
$ whence -v _kill 
_kill is a shell function from /usr/share/zsh/5.2/functions/_kill 

Zsh Documentation – 9.1 Autoloading Functions

To load the definition of an autoloaded function myfunc without executing myfunc, use:

autoload +X myfunc

autoload +X 之后,您还可以使用 whence -f 查看实际功能

$ whence -f _kill 
_kill () { 
    local curcontext="$curcontext" line state ret=1 
    typeset -A opt_args 
    _arguments -C '(-s -l 1)-n[specify signal number]:signal number' '(-n -l 1)-s[specify signal name]:signal:_signals -s' '(-n -s)-l[list signal names or numbers of specified signals]:*:signal:_signals' '(-n -s -l)1::signal:_signals -p -s' '*:processes:->processes' && ret=0 
    if [[ -n "$state" ]] 
    then 
        local pgrp='process-groups:: _wanted ' 
        [[ -n "$opt_args[(i)-[ns]]${${(@)line:#--}}" && -prefix - ]] && pgrp+='-x ' 
        pgrp+="process-groups expl 'process-group' compadd - 0" 
        _alternative 'processes:: _pids' 'jobs:: _jobs -t' $pgrp && ret=0 
    fi 
    return ret 
} 


标签:Shell
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号