小编mas*_*sgo的帖子

使用 sudo 时参数的 Bash 补全

我正在使用 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 …
Run Code Online (Sandbox Code Playgroud)

bash sudo centos autocomplete

5
推荐指数
1
解决办法
1995
查看次数

使用带有 Keepass+Putty 的 SSH 密钥身份验证时的 sudo 身份验证

我使用 Putty 通过 SSH 登录到各种 Linux 机器(主要是 CentOS 和 Ubuntu)。我使用 SSH 密钥身份验证,而密钥存储在 Keepass 2.x 中并通过 tha Keeagent插件(基本上是选美的替代品)移交给 Putty 。到目前为止工作正常。

但是登录时,使用sudo需要我输入密码。有办法解决吗?那么,当通过 SSH 密钥登录时,sudo 不需要密码吗?


6 年前有一个非常相似的问题:sudo: don't ask password when login with ssh key 。给出的答案并不是真正的答案,而是一种使用 ssh 密钥登录并直接使用 root 登录的解决方法。不这样做的原因有很多。

ssh sudo putty key-authentication

5
推荐指数
1
解决办法
3681
查看次数

如何防止一个命令触发 ERR 陷阱?

我正在使用 ERR 陷阱来捕获 bash 脚本中的任何错误并输出日志中发生的事情。(类似于这个问题:Trap, ERR, and echoing the error line)它按预期工作。唯一的问题是,在我的脚本中的某个时刻,预期会发生退出代码 !=0。在这种情况下如何使陷阱不触发?

这是一些代码:

err_report() {
    echo "errexit on line $(caller)" | tee -a $LOGFILE 1>&2
}

trap err_report ERR
Run Code Online (Sandbox Code Playgroud)

然后在脚本中:

<some command which occasionally will return a non-zero exit code>

if [ $? -eq 0 ]; then
    <handle stuff>
fi
Run Code Online (Sandbox Code Playgroud)

每次命令返回非零值时,都会触发我的陷阱。我可以只针对这部分代码避免这种情况吗?

我检查了这个问题:使用`set -eu` 时 EXIT 和 ERR 陷阱的正确行为, 但我真的不知道如何将它应用于我的案例 - 如果完全适用的话。

bash trap

2
推荐指数
1
解决办法
1916
查看次数

标签 统计

bash ×2

sudo ×2

autocomplete ×1

centos ×1

key-authentication ×1

putty ×1

ssh ×1

trap ×1