在Ubuntu终端中查看Shell函数定义的方法
在Ubuntu终端中查看Shell函数定义的方法
哈哈,太懂这种痛点了!用自定义函数替代别名确实能实现更复杂的逻辑,但没法像alias tailnet那样一键查看定义,刚开始切换的时候我也纠结了好久。不过Ubuntu常用的shell(比如bash、zsh)里都有现成的命令能解决这个问题,给你分享几个实用的方法:
1. 用type命令快速查看
这是最直接的方法,和查看别名的逻辑类似,直接在终端输入:
type tailnet
针对你例子里的tailnet函数,输出会是这样:
tailnet is a function tailnet () { # Continuous tailing of the network log journalctl -f -u NetworkManager }
它不仅会告诉你这是个函数,还会直接把完整的函数定义打印出来,完全不用打开文件。
2. 用declare -f专门查看函数定义
declare是shell的内置命令,加上-f参数就专门用来处理函数:
# 查看单个函数的定义 declare -f tailnet # 如果不加函数名,会列出当前shell中所有已定义的函数及其完整定义 declare -f
这个命令的输出格式和type类似,但它更专注于函数,如果你想批量查看所有函数,用这个会更方便。
3. 直接搜索函数文件(如果知道路径的话)
要是你记得函数是存在~/.functions这类文件里的,也可以用grep直接定位,不用打开整个文件:
grep -n "tailnet()" ~/.functions
-n参数会显示行号,方便你快速找到位置,适合需要编辑函数的时候用。
另外补充一句:如果用的是zsh,除了上面的方法,还可以用functions tailnet命令,效果和declare -f差不多,也是直接输出函数定义。
备注:内容来源于stack exchange,提问作者Tex
相关产品推荐
相关产品推荐

