所以我陷入了这个经典陷阱。在尝试向自己介绍一些基本的bash脚本时,我决定要这样做:
alias emacs=emacsFunction
emacsFunction() {
if [ "$#" -eq 1 ]; then
emacs $1 &
fi
emacs
}
Run Code Online (Sandbox Code Playgroud)
目标很简单。当我在终端中键入emacs时,如果我提供了一个参数(例如emacs .bashrc),我希望它在emacs中打开我的.bashrc文件,并且仍然允许我在终端窗口中输入命令(在命令中添加'&'允许)。
我愿意接受任何建议。我敢肯定,有一种比我在这里的代码更有效(更智能)的方法。
提前致谢!
避免使用函数/别名/等。是什么command内置的是(见的Bash内建命令)。因此,command emacs当您要避免使用函数或别名时,请使用。
话虽如此,您在这里不需要功能和别名。您的函数只能称为emacs。
您也不需要显式测试参数,除非您只希望在传递参数时将其转到后台(否则就不需要)。(我假设在背景情况下会生成X窗口?)
如果您确实希望背景仅用于参数版本,那么您需要这样做:
emacs() {
if [ $# -eq 0 ]; then
command emacs
else
command emacs "$@" &
fi
}
Run Code Online (Sandbox Code Playgroud)
假设您不需要参数仅背景业务,那么您可以使用:
emacs() {
command emacs "$@" &
}
Run Code Online (Sandbox Code Playgroud)
话虽这么说,如果您不希望仅背景换参数的行为,那么这实际上并没有什么不同,只是始终运行,emacs &或者emacs <files> &因为您只保存最后键入的内容&。