Comment écrire un script shell simple sur un VPS
Introduction
Ce didacticiel a pour but de vous apprendre à écrire des scripts shell à des fins les plus diverses. Les scripts shell peuvent être utilisés pour exécuter plusieurs commandes, une seule commande avec des arguments difficiles et étendus, ou des interfaces plus conviviales pour distribuer votre travail. Essentiellement, cela vous facilite la vie en automatisant les choses que vous auriez à faire manuellement sans lui.
Configuration d'un dossier
Avant de commencer à écrire votre script shell, il est recommandé de lui désigner un dossier. Il est recommandé que, pour les scripts personnels, vous le fassiez à ~/bin. Pour créer ce dossier, exécutez :
mkdir ~/bin
Et pour que les scripts s'exécutent depuis n'importe où dans le système, modifiez votre /etc/profile en exécutant :
sudo nano /etc/profile
Ajoutez ensuite les lignes suivantes à la fin du fichier :
PATH=$PATH:$HOME/bin export PATH
N'oubliez pas de CTRL + O pour enregistrer et CTRL + X pour quitter. Vous pouvez appliquer les modifications en exécutant :
source /etc/profile
Si votre distribution Linux ne prend pas en charge la commande source, vous pouvez également redémarrer le VPS en tapant :
sudo reboot
Création d'un fichier
Pour démarrer votre script shell, vous devrez créer un fichier exécutable. Ceci peut être facilement réalisé en exécutant:
touch ~/bin/firstscript chmod +x ~/bin/firstscript
Ouvrez l'éditeur de texte nano pour commencer à ajouter des commandes :
nano ~/bin/firstscript
Pour que le chargeur de programme reconnaisse ce fichier exécutable en tant que script shell et exécute les commandes à partir du bon répertoire, vous devez ajouter la ligne suivante en haut du fichier :
#!/bin/sh
Et vous êtes prêt à ajouter la commande Linux que vous souhaitez, telle que :
clear echo “Hello World!”
Après avoir enregistré (CTRL+O) et quitté (CTRL+X) nano, pour exécuter votre script, saisissez simplement :
firstscript
de n'importe où dans votre système. Le résultat devrait ressembler à ceci :
Exemple de scénario
L'un des principaux points des scripts shell est de créer des raccourcis pour les tâches répétitives. Par exemple, si vous déplacez beaucoup de fichiers vers votre dossier ~/backup, vous pouvez configurer un script qui supprimera simplement tout ce que vous spécifiez. La façon dont cela fonctionnerait est en tapant:
filebackup file-name1 file-name2...
Ensuite, quand vous en aurez besoin, il sera là. Avant de commencer à coder, examinons ce que vous devrez apprendre. Les scripts shell bien écrits ne sont pas codés en dur. Cela signifie que, dans le cadre de cet exemple, si vous souhaitez modifier votre dossier de sauvegarde, vous pouvez facilement le faire en ne modifiant qu'une des premières lignes du script. Oui, la variable qui lui correspond ne sera référencée qu'une seule fois, mais cela vous aidera vraiment plus tard si vous vous habituez à le faire maintenant. Pour tester cela, vous n'aurez pas besoin de sauter dans l'éditeur de texte, faites-le directement depuis la ligne de commande en tapant :
testvariable=teststring
La commande "echo" affiche du texte. En exécutant:
echo $testvariable
Vous pourrez voir la valeur que vous lui avez définie, qui dans ce cas est "teststring". Vous pouvez maintenant commencer à le coder en faisant comme d'habitude.
touch ~/bin/filebackup chmod +x ~/bin/filebackup nano ~/bin/filebackup
N'oubliez pas que toute ligne commençant par un '#' est un commentaire. Cela n'aura aucun impact sur votre programme, sauf s'il est suivi d'un point d'exclamation à la première ligne de votre programme, qui se transforme alors en "shebang", comme expliqué précédemment lorsque la ligne "#!/bin/sh" a été présenté. Voici à quoi pourrait ressembler le script :
#!/bin/sh #Backup script #Description: makes a copy of any given file at the backup folder #Author: Your Name #Date: 8/10/2013 #Backup folder; set this variable to any folder you have write permissions on BACKUPFOLDER=~/backup #The script will make sure the folder exists mkdir -p $BACKUPFOLDER #Now the script will copy the given file to the folder cp -a $@ $BACKUPFOLDER
Maintenant, après avoir enregistré (CTRL+O) et quitté (CTRL+X), passons en revue le code. Les premières lignes n'étaient que des commentaires. Nous avons ensuite spécifié avec une variable BACKUPFOLDER où nous voulions que nos fichiers soient sauvegardés. Nous avons procédé à l'exécution de "mkdir -p $BACKUPFOLDER". Cela crée le dossier, mais ne génère aucune erreur s'il existe déjà. Sur la commande suivante, celle "cp", nous avons placé chaque argument qui a précédé l'appel du script avec "$@". Les arguments sur ce contexte sont tous les noms de fichiers que vous placez après que le script a été appelé pour être sauvegardé. Juste après, il y a le dossier de destination, dans ce cas "$BACKUPFOLDER". Vous pouvez maintenant tester votre script en accédant à n'importe quel dossier de votre système avec quelques fichiers et en exécutant :
filebackup file1 file2
Vous pouvez ajouter autant de fichiers que vous le souhaitez à cette ligne et ils seront tous copiés dans le dossier de sauvegarde.
Conclusion
Les scripts shell sont partout sur les systèmes Linux, et c'est pour une raison. Ils sont extrêmement utiles et les possibilités sont incroyablement élevées. Ce tutoriel ne couvre que les bases, il y a beaucoup plus à apprendre.