Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
tutoriel:script_shell [Le 12/06/2018, 17:48] L'Africain [Écrire un script] |
tutoriel:script_shell [Le 18/02/2019, 00:51] 46.193.65.102 [Écrire un script] |
||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
Un script shell permet d'automatiser une série d'opérations. Il se présente sous la forme d'un fichier contenant une ou plusieurs commandes qui seront exécutées de manière séquentielle. | Un script shell permet d'automatiser une série d'opérations. Il se présente sous la forme d'un fichier contenant une ou plusieurs commandes qui seront exécutées de manière séquentielle. | ||
- | ===== Écrire un script ===== | + | #!/bin/bash |
+ | # This script will take an animated GIF and delete every other frame | ||
+ | # Accepts two parameters: input file and output file | ||
+ | # Usage: ./<scriptfilename> input.gif output.gif | ||
- | Si vous voulez écrire un script, vous avez deux possibilités : | + | # Make a copy of the file |
- | * soit vous tapez dans un shell toutes les commandes | + | cp $1 $2 |
- | * ou alors vous rassemblez toutes les instructions copiées, | + | |
- | À titre d'exemple, saisissez ces quelques lignes dans votre éditeur préféré : | + | # Get the number of frames |
+ | numframes=`gifsicle $1 -I | grep -P "\d+ images" --only-matching | grep -P "\d+" --only-matching` | ||
- | <code> | + | # Deletion |
- | #!/bin/bash | + | let i=0 |
- | # Indique au système que l'argument qui suit est le programme utilisé pour exécuter ce fichier | + | while [[ $i -lt $numframes ]]; do |
- | # En règle générale, les "#" servent à mettre en commentaire le texte qui suit comme ici | + | rem=$(( $i % 2 )) |
- | echo Mon premier script | + | |
- | echo Liste des fichiers : | + | |
- | ls -la | + | |
- | </code> | + | |
- | Le résultat de ce script est d'écrire à l'écran « Mon premier script », puis | + | if [ $rem -eq 0 ] |
- | en dessous « Liste des fichiers : », et enfin la liste des fichiers avec la | + | then |
- | commande ''`ls -la`''. | + | gifsicle $2 --delete "#"$(($i/2)) -o $2 |
+ | fi | ||
- | Comme vous l'avez compris, la commande [[http://www.linuxpedia.fr/doku.php/commande/echo|echo]] sert à écrire | + | let i=i+1 |
- | quelque chose à l'écran. | + | done |
+ | =====Pour faire qu'un script soit éxécutable ===== | ||
- | <note warning>Cependant il vous faudra faire extrêmement attention à tous ces morceaux de code. Leur utilisation sans connaissance de votre part pourrait vous faire perdre de précieuses données. | ||
- | exemple: surtout ne pas lancer cette commande rm -Rf /* qui supprime TOUS vos fichiers !!!! | ||
- | </note> | ||
- | |||
- | |||
- | =====Pour exécuter un script ===== | ||
- | il faut le rendre éxécutable : | ||
==== Méthode graphique ==== | ==== Méthode graphique ==== | ||
Ligne 55: | Ligne 49: | ||
- Remplacez le contenu du champs //Terminal emulator// par le contenu du champs //Commande// que vous avez pris soin de noter à la première étape. | - Remplacez le contenu du champs //Terminal emulator// par le contenu du champs //Commande// que vous avez pris soin de noter à la première étape. | ||
- Vous pouvez ensuite suivre la méthode graphique indiquée ci-dessus pour exécuter vos scripts shell. | - Vous pouvez ensuite suivre la méthode graphique indiquée ci-dessus pour exécuter vos scripts shell. | ||
- | - Pour Ubuntu 17.10, il faut en plus installer les paquets nautilus-open-terminal et nautilus-scripts-manager pour pouvoir lancer un script depuis Nautilus | + | |
==== Méthode dans un terminal ==== | ==== Méthode dans un terminal ==== | ||
Ligne 65: | Ligne 59: | ||
Puis vous pouvez exécuter le script en faisant : <code>./nom_du_script</code> | Puis vous pouvez exécuter le script en faisant : <code>./nom_du_script</code> | ||
mais pourquoi le ./ ? | mais pourquoi le ./ ? | ||
- | === le /. === | + | === Le chemin ./ === |
Il peut être intéressant d'ajouter un répertoire au "PATH" pour pouvoir exécuter ses scripts sans avoir à se placer dans le bon dossier. | Il peut être intéressant d'ajouter un répertoire au "PATH" pour pouvoir exécuter ses scripts sans avoir à se placer dans le bon dossier. |