如何在每次某个命令终止时自动执行一条命令?

如何在每次某个命令终止时自动执行一条命令?

示例:一旦add-apt-repository进程终止,立即运行apt-get update- 无需手动输入命令。

有办法吗?是否可以不使用密码来设置这样的组合sudo?(虽然我不介意这两种方式)

我问的是以下问题:如何将两个命令链接在一起,以便每当我执行某个命令时,它总是执行其后的链接命令?

答案1

和往常一样,

sudo bash -c "command1; command2"

如果您希望仅在 command1 成功完成后运行 command2,则可以使用 as&&而不是;

sudo bash -c "command1 && command2"

我将使用以下命令作为您的示例。

sudo bash -c "add-apt-repository <repo> && apt-get update"

答案2

使用别名或简单的 bash 函数挂钩存在各种问题,但您可以为命令编写一个小包装器并将其粘贴/usr/local/bin在您的路径中优先。

这是一个创建脚本并同时对其进行 chmod 的小技巧.
它会将可执行包装脚本转储到 中/usr/local/bin/add-apt-repository

sudo install -b -m 755 /dev/stdin /usr/local/bin/add-apt-repository << 'EOF'
#!/bin/sh
/usr/bin/add-apt-repository "$@"
apt-get update
EOF 

要撤销此操作,只需删除/usr/local/bin/add-apt-repository

如果您想做一些更有意思的事情(比如链接apt-get installapt-get update这样您总是在安装之前更新),我们只需要扩展脚本来查看参数。

sudo install -b -m 755 /dev/stdin /usr/local/bin/apt-get << 'EOF'
#!/bin/sh
if [ "$1" = "install" ] ; then
    /usr/bin/apt-get update
fi
/usr/bin/apt-get "$@"
EOF 

不过考虑到这将在之前运行更新每一个 apt-get install呼叫。这听起来可能有用,但在实践中可能真的很乏味。

答案3

要按特定顺序执行某些命令,需要使用 shell 脚本。您需要做的就是 - 按Ctrl+ Alt+打开终端T 并按照以下步骤操作 -
1. 输入gedit filename.sh
2. 输入此命令后,将打开一个文本编辑器,您可以在其中每行输入一个所需的命令。例如,
sudo add-apt-repository
apt-get update
3. 输入所有命令后,使用 GUI 或按Ctrl+SCtrl+保存并退出Q
4. 现在您将返回终端。sh filename.sh在终端上运行,您的命令将执行,前提是您的命令没有错误。
此外,如果您从超级用户帐户(root)登录,则无需输入sudo命令。

答案4

最简单的方法是运行:

sudo add-apt-repository <ppa_name> && sudo apt-get update

如果第一个命令成功完成,则运行第二个命令。

相关内容