in

Le guide du débutant sur les scripts Shell: les bases

Le terme «script shell» est souvent mentionné dans les forums Linux, mais de nombreux utilisateurs ne le connaissent pas. L’apprentissage de cette méthode de programmation simple et puissante peut vous aider à gagner du temps, à mieux maîtriser la ligne de commande et à bannir les tâches fastidieuses de gestion de fichiers.

Qu’est-ce que le script Shell?

Être un utilisateur Linux signifie que vous jouez avec la ligne de commande. Qu’on le veuille ou non, il y a juste certaines choses qui se font beaucoup plus facilement via cette interface qu’en pointant et en cliquant. Plus vous utilisez et apprenez la ligne de commande, plus vous voyez son potentiel. Eh bien, la ligne de commande elle-même est un programme: le shell. La plupart des distributions Linux utilisent aujourd’hui Bash, et c’est ce dans quoi vous entrez réellement des commandes.

Maintenant, certains d’entre vous qui ont utilisé Windows avant d’utiliser Linux peuvent se souvenir des fichiers batch. C’étaient de petits fichiers texte que vous pouviez remplir de commandes à exécuter et que Windows les exécutait à son tour. C’était un moyen intelligent et soigné de faire certaines choses, comme exécuter des jeux dans le laboratoire informatique de votre lycée lorsque vous ne pouviez pas ouvrir les dossiers système ou créer des raccourcis. Les fichiers batch dans Windows, bien qu’utiles, sont une imitation bon marché des scripts shell.

Les scripts shell nous permettent de programmer des commandes dans des chaînes et de faire exécuter par le système un événement scripté, tout comme les fichiers batch. Ils permettent également des fonctions beaucoup plus utiles, telles que la substitution de commandes. Vous pouvez appeler une commande, telle que date, et utiliser sa sortie dans le cadre d’un schéma de dénomination de fichier. Vous pouvez automatiser les sauvegardes et chaque fichier copié peut avoir la date du jour ajoutée à la fin de son nom. Les scripts ne sont pas seulement des appels de commandes. Ce sont des programmes à part entière. Les scripts vous permettent d’utiliser des fonctions de programmation – telles que les boucles «for», les instructions if / then / else, etc. – directement dans l’interface de votre système d’exploitation. Et vous n’avez pas besoin d’apprendre une autre langue car vous utilisez ce que vous savez déjà: la ligne de commande.

C’est vraiment le pouvoir du script, je pense. Vous arrivez à programmer avec des commandes que vous connaissez déjà, tout en apprenant les bases de la plupart des principaux langages de programmation. Besoin de faire quelque chose de répétitif et de fastidieux? Script-le! Besoin d’un raccourci pour une commande vraiment compliquée? Script-le! Vous voulez créer une interface de ligne de commande vraiment facile à utiliser pour quelque chose? Script-le!

Avant que tu commences

Avant de commencer notre série de scripts, couvrons quelques informations de base. Nous utiliserons le shell bash, que la plupart des distributions Linux utilisent de manière native. Bash est également disponible pour les utilisateurs de Mac OS et Cygwin sur Windows. Comme il est si universel, vous devriez pouvoir créer des scripts quelle que soit votre plate-forme. De plus, tant que toutes les commandes référencées existent, les scripts peuvent fonctionner sur plusieurs plates-formes avec peu ou pas de réglages nécessaires.

Les scripts peuvent facilement utiliser les privilèges «administrateur» ou «superutilisateur», il est donc préférable de tester les scripts avant de les mettre en œuvre. Faites également preuve de bon sens, comme vous assurer que vous avez des sauvegardes des fichiers sur lesquels vous êtes sur le point d’exécuter un script. Il est également très important d’utiliser les bonnes options, comme –i pour la commande rm, afin que votre interaction soit requise. Cela peut éviter de vilaines erreurs. En tant que tel, lisez les scripts que vous téléchargez et soyez prudent avec les données dont vous disposez, au cas où les choses tournent mal.

Au fond, les scripts ne sont que des fichiers texte. Vous pouvez utiliser n’importe quel éditeur de texte pour les écrire: gedit, emacs, vim, nano… Cette liste est longue. Assurez-vous simplement de l’enregistrer sous forme de texte brut, pas de texte enrichi ou de document Word. Puisque j’adore la facilité d’utilisation offerte par le nano, je vais l’utiliser.

Autorisations et noms de script

Les scripts sont exécutés comme des programmes et pour que cela se produise, ils doivent disposer des autorisations appropriées. Vous pouvez rendre les scripts exécutables en exécutant la commande suivante dessus:

chmod + x ~ / somecrazyfolder / script1

Cela permettra à n’importe qui d’exécuter ce script particulier. Si vous souhaitez limiter son utilisation à votre utilisateur uniquement, vous pouvez utiliser ceci à la place:

chmod u + x ~ / somecrazyfolder / script1

Pour exécuter ce script, vous devrez cd dans le répertoire approprié, puis exécuter le script comme ceci:

cd ~ / somecrazyfolder

./script1

Pour faciliter les choses, vous pouvez placer des scripts dans un dossier «bin» de votre répertoire personnel:

~ / bin

Dans de nombreuses distributions modernes, ce dossier n’est plus créé par défaut, mais vous pouvez le créer. C’est généralement là que sont stockés les fichiers exécutables appartenant à votre utilisateur et non à d’autres utilisateurs. En plaçant des scripts ici, vous pouvez simplement les exécuter en tapant leur nom, tout comme les autres commandes, au lieu d’avoir à faire un cd autour et d’utiliser le préfixe «./».

Avant de nommer un script, cependant, vous devez utiliser la commande suivante pour vérifier si vous avez installé un programme qui utilise ce nom:

lequel [command]

Beaucoup de gens nomment leurs premiers scripts «test», et lorsqu’ils essaient de l’exécuter dans la ligne de commande, rien ne se passe. C’est parce qu’il entre en conflit avec la commande de test, qui ne fait rien sans arguments. Assurez-vous toujours que les noms de vos scripts ne sont pas en conflit avec les commandes, sinon vous pourriez vous retrouver à faire des choses que vous n’avez pas l’intention de faire!

Directives de script

Comme je l’ai mentionné précédemment, chaque fichier de script est essentiellement du texte brut. Cela ne signifie pas que vous pouvez écrire ce que vous voulez bon gré mal gré. Lorsqu’un fichier texte est tenté d’être exécuté, les shells les analysent pour savoir s’ils sont des scripts ou non, et comment tout gérer correctement. Pour cette raison, vous devez connaître quelques directives.

  1. Chaque script doit être avec « #! / Bin / bash »
  2. Chaque nouvelle ligne est une nouvelle commande
  3. Les lignes de commentaire commencent par un #
  4. Les commandes sont entourées par ()

Le hack Hash-Bang

Lorsqu’un shell analyse un fichier texte, le moyen le plus direct d’identifier le fichier en tant que script est de créer votre première ligne:

#! / bin / bash

Si vous utilisez un autre shell, remplacez son chemin ici. Les lignes de commentaires commencent par des hachages (#), mais en ajoutant le bang (!) Et le chemin du shell après c’est une sorte de hack qui contournera cette règle de commentaire et forcera le script à s’exécuter avec le shell vers lequel cette ligne pointe.

Nouvelle ligne = nouvelle commande

Chaque nouvelle ligne doit être considérée comme une nouvelle commande ou comme un composant d’un système plus vaste. Les instructions if / then / else, par exemple, prendront plusieurs lignes, mais chaque composant de ce système est dans une nouvelle ligne. Ne laissez pas une commande saigner dans la ligne suivante, car cela peut tronquer la commande précédente et vous donner une erreur sur la ligne suivante. Si votre éditeur de texte fait cela, vous devez désactiver l’habillage de texte pour être du bon côté. Vous pouvez désactiver l’habillage de texte en nano bit en appuyant sur ALT + L.

Commentez souvent avec #s

Si vous commencez une ligne par un #, la ligne est ignorée. Cela le transforme en une ligne de commentaire, où vous pouvez vous rappeler ce qu’était la sortie de la commande précédente ou ce que fera la commande suivante. Encore une fois, désactivez l’habillage du texte ou divisez votre commentaire en plusieurs lignes qui commencent toutes par un hachage. Utiliser beaucoup de commentaires est une bonne pratique à garder, car cela vous permet, ainsi qu’à d’autres personnes, de modifier vos scripts plus facilement. La seule exception est le hack Hash-Bang susmentionné, alors ne suivez pas les #s avec! S. 😉

Les commandes sont entourées de parenthèses

Autrefois, les substitutions de commandes étaient effectuées avec des graduations simples (`, partage la touche ~). Nous n’allons pas encore aborder ce sujet, mais comme la plupart des gens partent explorer après avoir appris les bases, c’est probablement une bonne idée de mentionner que vous devriez plutôt utiliser des parenthèses. Ceci est principalement dû au fait que lorsque vous imbriquez des commandes dans d’autres commandes, les parenthèses fonctionnent mieux.

Votre premier scénario

Commençons par un simple script qui vous permet de copier des fichiers et d’ajouter des dates à la fin du nom de fichier. Appelons cela «datecp». Tout d’abord, vérifions si ce nom entre en conflit avec quelque chose:

Vous pouvez voir qu’il n’y a pas de sortie de la commande which, donc nous sommes tous prêts à utiliser ce nom.

Créons un fichier vide dans le dossier ~ / bin:

touchez ~ / bin / datecp

Et, modifions l’autorisation maintenant, avant d’oublier:

Commençons alors à construire notre script. Ouvrez ce fichier dans l’éditeur de texte de votre choix. Comme je l’ai dit, j’aime la simplicité du nano.

nano ~ / bin / datecp

Et, allons-y et insérons la première ligne préalable, et un commentaire sur ce que fait ce script.

Ensuite, déclarons une variable. Si vous avez déjà pris de l’algèbre, vous savez probablement ce que c’est. Une variable nous permet de stocker des informations et d’en faire des choses. Les variables peuvent «s’étendre» lorsqu’elles sont référencées ailleurs. Autrement dit, au lieu d’afficher leur nom, ils afficheront leur contenu stocké. Vous pouvez ultérieurement indiquer à cette même variable de stocker des informations différentes, et toute instruction qui se produit après utilisera les nouvelles informations. C’est un espace réservé vraiment sophistiqué.

Que mettrons-nous dans la variable? Eh bien, stockons la date et l’heure! Pour ce faire, nous allons faire appel à la commande date.

Jetez un œil à la capture d’écran ci-dessous pour savoir comment créer la sortie de la commande date:

Vous pouvez voir qu’en ajoutant différentes variables commençant par%, vous pouvez modifier la sortie de la commande en ce que vous voulez. Pour plus d’informations, vous pouvez consulter la page de manuel de la commande de date.

Utilisons cette dernière itération de la commande de date, «date +% m_% d_% y-% H.% M.% S», et utilisons-la dans notre script.

Si nous devions enregistrer ce script maintenant, nous pourrions l’exécuter et cela nous donnerait la sortie de la commande de date comme nous nous y attendions:

Mais faisons quelque chose de différent. Donnons un nom de variable, comme date_formatted à cette commande. La syntaxe appropriée pour cela est la suivante:

variable = $ (arguments – options de commande)

Et pour nous, nous le construisions comme ceci:

date_formatted = $ (date +% m_% d_% y-% H.% M.% S)

C’est ce que nous appelons la substitution de commandes. Nous disons essentiellement à bash que chaque fois que la variable «date_formatted» apparaît, d’exécuter la commande entre parenthèses. Ensuite, quelle que soit la sortie que les commandes donnent doit être affichée à la place du nom de la variable, «date_formatted».

Voici un exemple de script et sa sortie:

Notez qu’il y a deux espaces dans la sortie. L’espace entre les guillemets de la commande echo et l’espace devant la variable sont tous deux affichés. N’utilisez pas d’espaces si vous ne voulez pas qu’ils apparaissent. Notez également que sans cette ligne «echo» ajoutée, le script ne donnerait absolument aucune sortie.

Revenons à notre script. Ajoutons ensuite la partie copie de la commande.

cp –iv $ 1 $ 2. $ date_formatted

Cela appellera la commande copy, avec les options –i et –v. Le premier vous demandera une vérification avant d’écraser un fichier, et le second affichera ce qui est en panne sur la ligne de commande.

Ensuite, vous pouvez voir que j’ai ajouté l’option «$ 1». Lors de l’écriture de scripts, un signe dollar ($) suivi d’un nombre indiquera cet argument numéroté du script lorsqu’il a été appelé. Par exemple, dans la commande suivante:

cp –iv Trogdor2.mp3 ringtone.mp3

Le premier argument est «Trogdor2.mp3» et le second argument est «ringtone.mp3».

En regardant notre script, nous pouvons voir que nous référençons deux arguments:

nom de fichier ajouté

Cela signifie que lorsque nous exécutons le script, nous devrons fournir deux arguments pour que le script s’exécute correctement. Le premier argument, $ 1, est le fichier qui sera copié et est remplacé par le premier argument de la commande «cp –iv».

Le deuxième argument, $ 2, servira de fichier de sortie pour la même commande. Mais, vous pouvez également voir que c’est différent. Nous avons ajouté un point et nous avons référencé la variable «date_formatted» ci-dessus. Curieux de savoir ce que cela fait?

Voici ce qui se passe lorsque le script est exécuté:

Vous pouvez voir que le fichier de sortie est répertorié comme ce que j’ai entré pour 2 $, suivi d’un point, puis de la sortie de la commande de date! Cela a du sens, non?

Maintenant, lorsque j’exécute la commande datecp, elle exécutera ce script et me permettra de copier n’importe quel fichier vers un nouvel emplacement, et ajoutera automatiquement la date et l’heure de fin du nom de fichier. Utile pour archiver des trucs!

Les scripts Shell sont au cœur du fonctionnement de votre système d’exploitation pour vous. Vous n’avez pas non plus besoin d’apprendre un nouveau langage de programmation pour y arriver. Essayez de créer des scripts avec certaines commandes de base à la maison et commencez à penser à ce que vous pouvez utiliser.

Faites-vous un script? Avez-vous des conseils pour les débutants? Partagez votre opinion dans les commentaires! Il y a plus à venir dans cette série!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Modifier le schéma de couleurs par défaut dans Office 2007

Modifier le schéma de couleurs par défaut dans Office 2007

Personnaliser la barre de titre et les autres polices système dans Windows 7

Personnaliser la barre de titre et les autres polices système dans Windows 7