Bash 使用 sudo 时完成参数

Bash 使用 sudo 时完成参数

我正在使用 CetnOS 6,并且希望在使用sudo.

我发现这个问题https://superuser.com/questions/804128/bash-hints-does-not-work-after-sudo-or-man现在有以下作品:

  • yu[tab]完成yum并按下另一个选项卡,它会建议不同的 yum 命令
  • yum upg[tab]yum upgrade根据需要自动完成
  • sudo yu[tab]sudo yum按预期自动完成
  • sudo yum upg[tab] 不自动完成对任何事情,也没有任何建议。

即使使用 sudo 如何才能实现参数补全?

(我yum仅用作示例,因为它在所有 CentOS 上都可用;其他命令的结果相同。)


有关我的系统的一些信息:

$ uname -a
Linux server 2.6.32-642.6.1.el6.x86_64 #1 SMP Wed Oct 5 00:36:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

$ yum list installed | grep completion
bash-completion.noarch  1:1.3-7.el6        @epel

$ cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
complete -cf sudo

答案1

这不是完美的解决方法,但您可以添加complete -cf sudo到您的其中.bashrc,它将自动完成 sudo 命令。

然而,这样做时,它不会采取行动确切地就像正常的制表符完成一样。例如,如果您要使用它,那么sudo cd [tab]您将得到很多无用的可能性 - 即文件名将显示...谁想要 cd 到文件?

但在大多数情况下,它会完成类似的命令sudo yum upd[tab]

相关内容