Bash

如何製作保留製表符補全的別名或函式?

  • December 23, 2020

我創建了一個別名來節省一些使用 systemd 的擊鍵:

$ alias sctl='systemctl'

但是,這會中斷子命令的選項卡完成。是否可以在不中斷製表符完成的情況下給命令起別名?

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

complete | grep " systemctl$"

輸出如下所示:

complete -F _functionname systemctl

然後使用:

complete -F _functionname sctl

為完成你的別名註冊功能。

現在,當您輸入sctl <tab><tab>時,將出現與您輸入時相同的建議systemctl

安裝此工具後,您可以這樣做:

  • ~/.bash_profile
alias sctl='systemctl'
  • ~/.bash_completion
complete -F _complete_alias sctl
  • 鍵入sctl <tab>以顯示systemctl命令:
$ sctl <Tab>
add-requires
add-wants
cancel
cat
condreload
...

引用自:https://unix.stackexchange.com/questions/224227