这个网站说函数比别名更快,但他正确地指出别名更容易理解——当你想要一些非常简单的东西并且不需要考虑传递参数时,别名是方便和明智的。在这种情况下,我的个人资料大约有 1,000 行,既可以作为我经常使用的功能和工具的来源,也可以作为保留技术的手段,我可以参考和重用于其他任务,包括别名和里面的功能。
但是一个问题是别名优先于函数,并且别名和函数的重新定义可能会导致问题(例如,如果我调用了一个函数gg
,然后在脚本中稍后,偶然地,我调用了一个别名gg
- 但如果稍后重新定义函数,再次作为函数,它会覆盖先前的定义)。配置文件加载,但我最终遇到了问题。一种解决方案可能是消除所有别名并仅使用函数(有人这样做吗,我很想知道,因为如果我想这样做alias m=man
比更直观和明智function m() { man $@; }
?),但我仍然有函数重新定义的问题在这种情况下。
有没有办法解析脚本以回答:“对于别名或函数的每个声明,向我显示包含该项目的重新声明(别名或函数)的所有行”?
尝试这样的事情:
注释掉的Data::Dump、
print
和dd
行用于调试。取消注释以更好地了解此脚本的作用及其工作原理。dd
该模块的函数输出Data::Dump
特别有趣,因为它向您展示了%fa
HoH 的结构(和内容)。Data::Dump
perl 中不包含它,它是您需要安装的库模块。您没有提到您使用的是什么发行版,但如果您使用的是 debian/ubuntu/mint/etc,您可以使用sudo apt install libdata-dump-perl
. 其他发行版可能将其打包在稍微不同的名称下。否则,您可以使用cpan
.示例输出(使用包含评论中的别名以及一些虚拟函数的文件):
简单的 grep 查找定义,但不检查重新定义:
这个 Perl 单行程序保持计数,因此它可以标记重新定义:
(输入文件的顺序会影响哪个文件未被标记为“重新定义”。)