您如何制作保留制表符完成功能的别名或函数?

lab*_*nth 14 bash alias autocomplete

我创建了一个别名来保存一些与 systemd 一起使用的击键:

$ alias sctl='systemctl'
Run Code Online (Sandbox Code Playgroud)

但是,这会破坏子命令的制表符完成。是否可以在不中断制表符完成的情况下对命令进行别名?

cha*_*aos 20

首先找出systemctl命令使用的完整功能:

complete | grep " systemctl$"
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

complete -F _functionname systemctl
Run Code Online (Sandbox Code Playgroud)

然后使用:

complete -F _functionname sctl
Run Code Online (Sandbox Code Playgroud)

为完成你的别名注册函数。

现在,当您键入 时sctl <tab><tab>systemctl将显示与您键入时相同的建议。

  • 请注意,这仅适用于命令本身的自动完成,而不适用于命令 + args。例如,如果您使用 `alias='command arg1 arg2'` 那么上面的内容将产生完成,就像您刚刚输入了 `command`,而不是 `command arg1 arg2`。 (2认同)

Cyk*_*ker 5

安装此工具后,您可以这样做: