示例:一旦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 install
,apt-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+S和Ctrl+保存并退出Q。
4. 现在您将返回终端。sh filename.sh
在终端上运行,您的命令将执行,前提是您的命令没有错误。
此外,如果您从超级用户帐户(root)登录,则无需输入sudo
命令。
答案4
最简单的方法是运行:
sudo add-apt-repository <ppa_name> && sudo apt-get update
如果第一个命令成功完成,则运行第二个命令。