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
将显示与您键入时相同的建议。
安装此工具后,您可以这样做:
在~/.bash_profile
:
alias sctl='systemctl'
Run Code Online (Sandbox Code Playgroud)在~/.bash_completion
:
complete -F _complete_alias sctl
Run Code Online (Sandbox Code Playgroud)键入sctl <tab>
以显示systemctl
命令:
$ sctl <Tab>
add-requires
add-wants
cancel
cat
condreload
...
Run Code Online (Sandbox Code Playgroud)