J'étais curieux de savoir comment exécuter plusieurs commandes via un script Shell.
Par exemple, juste pour l'essayer, j'aimerais pouvoir connecter un fichier .desktop à un fichier .sh qui exécutera tous les codes de mise à jour afin que je n'ai pas à le taper. Je sais comment exécuter une commande unique via un fichier .sh, pas plusieurs.
En tous cas?
C'est vraiment simple - vous devez séparer les commandes. Par exemple ceci:
#!/bin/bash
Sudo apt-get update
Sudo apt-get upgrade
mettra à jour les listes de paquets, puis les paquets. Une autre possibilité est la suivante (probablement mieux, car && n'autorisera la commande upgrade
que si update
se ferme correctement) :
#!/bin/bash
Sudo apt-get update && Sudo apt-get upgrade
Cela devrait exécuter les commandes pour mettre à jour la liste des paquets, puis le paquet eux-mêmes. Cela devra être sauvegardé dans un fichier texte (par exemple updatescript
dans le répertoire de base). Vous pouvez ensuite le rendre exécutable en lançant:
chmod +x ./updatescript
ou en faisant un clic droit sur le fichier et en le rendant exécutable dans ses propriétés:
et lancez-le avec ceci dans le terminal:
./updatescript
Note (s):
Il existe une option (-y
) disponible qui peut être utilisée avec la commande upgrade
afin qu'elle ne soit pas invitée avant la mise à niveau des packages. C'est une bonne idée de vérifier ce que apt-get
fait avant de mettre à jour les paquetages, car cela peut faire/va faire quelque chose de stupide ou quelque chose que vous ne voulez pas faire. Vous trouverez plus d’informations sur ce type d’option en exécutant man apt-get
.
Cela signifie également qu'il est préférable d'utiliser le terminal pour exécuter le script, car vous pouvez vérifier ce qu'il met à jour, puis l'exécuter. Si vous voulez un moyen graphique d'exécuter les mises à jour, utilisez le centre de logiciel comme il est destiné.
Juste pour ajouter quelques points à l’excellente réponse de @Wilf,
vous pouvez exécuter des commandes en parallèle si vous voulez, pour quelque raison que ce soit, par exemple, un script autostart
pour OpenBox pourrait ressembler à ceci:
#!/bin/bash
nitrogen --restore &
tint2 &
tilda
Ceci définira une image d’arrière-plan avec nitrogen
, lancera le panneau tint2
et lancera la console déroulante de style Quake3 tilda
, en même temps. Ceci est utile si vous n'avez pas besoin d'un programme pour terminer avant de lancer le suivant. Pas le cas pour apt-get update
et apt-get upgrade
cependant!
Notez le signe &
à la fin de chaque ligne. Cela incitera le shell à mettre ce processus en arrière-plan et à poursuivre l'exécution. Notez en quoi il diffère de &&
, qui est en gros un signe and
, command_1 && command_2
sera exécutécommand_1
et s’il se termine avec succès, il n’exécutera alors que command_2
, alors que command_1 & command_2
démarrera la deuxième à droite après le premier.
En outre, vous pouvez simplement empiler des commandes pour les exécuter en série, comme ceci:
#!/bin/bash
apt-get update
apt-get upgrade
Cela fonctionnera apt-get upgrade
après que apt-get update
soit fini, mais quel que soit le résultat. Ainsi, même si, par exemple, la mise à jour se ferme avec une erreur réseau, la mise à niveau sera toujours exécutée.
Vous pouvez également le faire sur une seule ligne, à l’aide du signe ;
: apt-get update ; apt-get upgrade
. Encore une fois, cette solution est non optimale pour ces commandes particulières, mais elle peut s'avérer utile dans d'autres situations.
Un dernier point rapide, vous pouvez également séparer les lignes contenant &&
en tant que telles:
command_1 &&
command_2
Ce sera la même chose que command_1 && command_2
.