我最终想要别名screen -r
。
我之所以想这样做,主要是因为该命令具有出色的 Tab 补全功能,可以向我显示当前的 GNU 屏幕会话。我希望使用别名来实现这一功能。
这让我想问一个更普遍的问题。我如何查看命令screen -r
或任何命令的 Tab 补全功能?
答案1
好的,这个问题涉及三件不同的事情:
1) 查找命令的 bash 补全功能complete -p <command>
即可。在本例中,complete -p screen
结果为complete -o default -F _screen screen
2) Bash 补全将接受参数。在 的情况下screen -r
,screen
bash 补全函数被调用并-r
作为参数。然后您可以从那里有条件地自动完成。
3)在Ubuntu上,/etc/bash_completion.d/screen
定义了屏幕完成功能。
因此,我为完成函数设置别名并保留它的方式screen -r
如下。
.bashrc:
alias scr="screen -r"
function _complete_scr() {
local does_screen_exist=$(type -t _screen_sessions)
local cur=$2 # Needed by _screen_sessions
if [[ "function" = "${does_screen_exist}" ]]; then
_screen_sessions "Detached"
fi
}
export -f _complete_scr
complete -F _complete_scr -o default scr