您更喜欢 bash 脚本还是别名作为快捷方式?

您更喜欢 bash 脚本还是别名作为快捷方式?

我有一个~/bin目录(位于我的PATH),其中存储了许多 1 或 2 行的小脚本。其中一些只是cd进入一个目录并对文件运行命令,比如vim什么的。但我的文件中还有很多具有.bash_aliases相同目的的别名。

您如何决定是编写一个 bash 脚本还是编写一个别名?你走哪条路重要吗?

答案1

如果我足够频繁地使用它们,足以保证将它们加载到每个 shell 中的开销。我会将它们写成函数。

如果它们是特定于项目的,我可能会将它们编写为一组别名和函数,当我处理该项目时,这些别名和函数可以来源到 shell 中。

只有当它们以独立的方式工作时,任何东西才会被制作成我的 ~/bin 中的脚本。有一些衬垫基本上是别名,但它们用于从 shell 以外的地方运行(例如,在其他程序中运行提示)。在大多数情况下,它们必须是相当实质性的脚本。

答案2

一般来说,shell 脚本函数比别名更灵活,您应该更喜欢它们。例如,在别名中,您无法测试给定参数的数量或其类型是否符合预期。我同意迦勒例如,别名非常适合简单的单行代码alias cp='cp -i'

答案3

对于任何更复杂的单个命令的字符串替换,脚本可能更合适。此外,任何将被其他脚本使用或可能被其他人使用的东西最好作为脚本。虽然从别人的 bin 目录中运行程序并不是一个好主意,但这比获取某人的个人别名文件要好。

别名最适合个性化您的交互环境。例如,,e='emacs -nw'之类的。

答案4

我使用最简单的方法。

主要是,如果命令没有参数,我通常使用别名。

如果命令有参数,我使用函数。

例如制作并 cd 到目录:

md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }

如果命令使用本身具有参数的已安装函数,我也会使用函数

例如,在 git 中添加 -v :

git () { [ $1 = commit ] && command git commit -v "${@:2}" || command git "$@"; }

相关内容