4

I know there is lots of information on this around, but I still find it confusing. Please help me with this quick one liner.

What do I need to write and where to make this a permanent feature of my system?

This is the command:

sudo apt update &&\
sudo apt upgrade -y &&\
sudo flatpak update &&\
conda upgrade --all -y

Maybe call it with sudo updateall

Slight digression: I asked a question about upgrade appimage and snap a while ago. There exists appimagehub but it pooly supported at the current time and snap by design updates without user involvement and there is no way to change this I believe. The others here can be manually updated.

2
  • I'd store your 'command' in a text file 'updateall' (maybe as a second line with #!/bin/bash as the first line). next chmod a+rx the file so its executable. finally make it available to anyone & everywhere sudo ln -s /home/user/updateall /usr/local/bin/updateall (or somewhere else you want in your $PATH), so anyone can execute it. it can also be done in other ways eg. your own ~/bin or using alias etc
    – guiverc
    Nov 23, 2017 at 1:14
  • 1
    Personally, I'd separate the commands. && implies relying on previous commands to work. For apt upgrade and update it makes sense, but doesn't for other two. So sudo bash -c 'apt update && apt upgrade' and let other two run by themselves. But that's just my opinion. Nov 23, 2017 at 9:28

3 Answers 3

4

In your rc file usually .bashrc with vim ~/.bashrc or nano ~/.bashrc add:

makealias() { echo "alias $1"="'${@:2}'" >> ~/.bashrc; }

Next time you want to add a bash alias just use:

makealias name command

Example: makealias brc vim ~/.bashrc

EDIT

This method does work with sudo, &&, || and other operators like ; if you enclose them in single quotes when making the alias.

Example: makealias updateall sudo apt-get update '&&' sudo apt-get upgrade

Do yourself a favor and use ; instead of && that is good practice.

0

Create a file updateall, put it on your path /usr/local/bin and make it executable.

You can format the file like this:

#!/bin/sh

sudo apt-get update
sudo apt-get upgrade -y
sudo flatpak upgrade
conda upgrade --all -y

Then just run the script as updateall (without sudo)

4
  • 3
    I think this is actually a more elegant solution by removing sudo from the script. Except that conda is not a sudo command so that doesn't actually work. Nov 23, 2017 at 1:29
  • You can allow the conda command to be run as a normal user as terdon explains here
    – Zanna
    Nov 23, 2017 at 9:26
  • Answer modified to run all commands except conda with sudo. Nov 23, 2017 at 22:19
  • sudo -u $USER conda upgrade --all -y does the job of running conda without sudo privileges.
    – himanshuxd
    Dec 13, 2017 at 5:29
-2

To make it available to all users who have sudo privileges(needed for the commands)

sudo nano /etc/bash.bashrc

To make it available for your user only sudo nano /home/yourusername/.bashrc

Go to the bottom of the file and add your aliases like so, I included the commented out (#)ALIAS LIST title

#ALIAS LIST

alias updateall='apt update && sudo apt upgrade -y && sudo flatpak upgrade && conda upgrade --all -y'

alias sudo='sudo '

Save the file, then run exec bash from the terminal.

The first alias is your command, the second alias allows you to use sudo with aliases.

1
  • 2
    No need to alias sudo . Simply put sudo into the alias.
    – Videonauth
    Nov 23, 2017 at 7:55

Not the answer you're looking for? Browse other questions tagged .