-4

Example: Once the add-apt-repository process has terminated, immediately run apt-get update - without having to enter the command manually.

Is there a way to do this? Is it possible to set such a combination without the use of the sudo password? (although I don't mind either way)

I'm asking the following: How can I link two commands together, so that whenever I execute a particular command, it always executes the the linked command after it?

TellMeWhy
  • 17,964
  • 41
  • 100
  • 142

4 Answers4

5

As normally,

sudo bash -c "command1; command2"

If you want to run command2 only after command1 is successfully completed, you can use as && rather than ;.

sudo bash -c "command1 && command2"

I'll use following command for your example.

sudo bash -c "add-apt-repository <repo> && apt-get update"
xiaodongjie
  • 2,874
4

There are various issues hooking into this with an alias or a simple bash function, but you can write a little wrapper for a command and stick it in /usr/local/bin which takes priority in your path.

This is a little trick to create a script and chmod it at the same time.
It'll dump an executable wrapper script in /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 

To reverse this, just delete /usr/local/bin/add-apt-repository.

If you want to do something fruitier (like linking apt-get install and apt-get update so you always update before installing), we just need to expand the script to look at the arguments.

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 

Though consider that this will run an update before every apt-get install call. This might sound helpful but could be really tedious in practice.

Oli
  • 299,380
1

To execute certain commands in a particular sequence shell scripting is used. All you have to do is - Open terminal by pressing Ctrl+Alt+T And follow the steps -
1. Type gedit filename.sh
2. After entering this command a text editor will open, where you can type the required commands one on each line. For example,
sudo add-apt-repository
apt-get update
3. After typing all the commands, save and exit either by using GUI or press Ctrl+S and Ctrl+Q.
4. Now you will return back to terminal. Run sh filename.sh on terminal and your commands will execute, provided there is no error in your commands.
Also, if you login from superuser account (root) you won't have to type sudo in your command.

Prachi
  • 87
  • 1
  • 8
0

The easiest way to do it is to run:

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

If the first command is finished successfully, the second will be run.

Pilot6
  • 92,041