How can I install and remove programs in one command line, and confirm only once?

When I install Ubuntu, the first thing I usually do is remove some programs and install some others. To get that done, I enter the following in a terminal:

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

This works nicely, but the problem is that I have to confirm twice: first I have to confirm the removal of the applications, and after some time I have to confirm the installation of the others. It would be great if I only had to confirm once, because I wouldn't have to come back to the computer in the meantime. Is there any command to get that done?

Please note that I'm not looking for workarounds in e.g. Synaptic Package Manager. I want to do this from the command line.

Thanks.


Solution 1:

As an alternative to the answers already posted, you can also select to install and remove packages in one command with aptitude. With aptitude install commands add - after the package name to have it removed, and with aptitude remove commands add + after the package name to have it installed.

If you enter

sudo aptitude install pkg1 pkg2-

the first packages will be installed while the second one will be removed.

However, on the other hand, if you use

sudo aptitude remove pkg1+ pkg2

the second package will be removed and the first installed.

Source: for a more detailed explanation of apt and aptitude, see the Debian Handbook.

Solution 2:

From the apt-get man page:

install [...] If a hyphen is appended to the package name (with no intervening space), the identified package will be removed if it is installed. Similarly a plus sign can be used to designate a package to install. These latter features may be used to override decisions made by apt-get's conflict resolution system.

You can append a hyphen to the package name, then apt-get will remove that package. So in order to remove package a and install b:

sudo apt-get install a- b

Solution 3:

Use the -y option for apt-get.

From the man page:

-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.

So for you it would look something like sudo apt-get remove -y foo1 foo2 foo3 and sudo apt-get install -y foo foo1 foo2 foo3.