如何在一个命令行中安装和删除程序,并只确认一次?

当我安装Ubuntu时,我通常做的第一件事是删除一些程序并安装其他程序。 为此,我在终端中输入以下内容:

sudo apt-get remove applicationA applicationB applicationC && sudo apt-get install applicationX applicationY applicationZ

这很好用,但问题是我必须确认两次:首先我必须确认删除应用程序,并在一段时间后我必须确认其他人的安装。 如果我只需要确认一次就会很棒,因为在此期间我不必再回到计算机上。 有没有命令要做到这一点?

请注意,我不是在寻找Synaptic Package Manager中的变通方法。 我想从命令行执行此操作。

谢谢。

apt-get使用-y选项。

手册页 :

 -y, --yes, --assume-yes Automatic yes to prompts; assume "yes" as answer to all prompts and run non-interactively. If an undesirable situation, such as changing a held package, trying to install a unauthenticated package or removing an essential package occurs then apt-get will abort. Configuration Item: APT::Get::Assume-Yes. 

所以对你而言,它看起来像sudo apt-get remove -y foo1 foo2 foo3sudo apt-get install -y foo foo1 foo2 foo3

作为已发布的答案的替代方法 ,您还可以选择使用aptitude在一个命令中安装和删除软件包。 使用aptitude install命令添加-在包名称之后删除它,并使用aptitude删除命令在包名称之后添加+以安装它。

如果你输入

sudo aptitude install pkg1 pkg2-

将安装第一个包,而第二个包将被删除。

但是 ,另一方面,如果你使用

sudo aptitude remove pkg1+ pkg2

第二个包将被删除,第一个包将被安装。

来源:有关aptaptitude的更详细解释,请参阅Debian手册 。

apt-get手册页:

install […]如果连字符附加到包名称(没有中间空格),则如果已安装,则将删除标识的包。 类似地,可以使用加号来指定要安装的包。 后面这些function可用于覆盖apt-get的冲突解决系统所做出的决策。

您可以在包名称后附加连字符,然后apt-get将删除该包。 所以为了删除包a并安装b

 sudo apt-get install a- b 

也许只使用一次sudo调用来执行这两个命令:

 sudo sh -c 'apt-get remove abc && apt-get install def'