Qu'est-ce que le script Shell et pourquoi vous devriez l'utiliser

Qu'est-ce que le script Shell et pourquoi vous devriez l'utiliser

Le shell est un programme au sein d'un système d'exploitation Linux ou Unix qui vous permet d'entrer des commandes à exécuter par le système. Lorsqu'une fenêtre de terminal est ouverte sur un ordinateur Linux, elle démarre le programme shell qui présente une interface pour entrer des commandes. Cette interface est connue sous le nom d'interface de ligne de commande. Lorsqu'une commande est saisie, elle est exécutée par le shell et la sortie est affichée à l'écran.





En plus de pouvoir accepter et exécuter des commandes de manière interactive, le shell peut également exécuter des commandes stockées dans un fichier. Ce mode d'exécution est appelé script shell , et dans cet article , nous couvrons les bases des scripts shell .





1. Histoire de la coquille

À partir d'Unix dans les années 1970, il y avait un programme shell appelé le Coque V6 développé par Ken Thomson. C'était un shell interactif et manquait de capacité de script.





Il a été suivi par le Coquille Bourne en 1977 et reste utilisé aujourd'hui comme shell par défaut pour le racine Compte. Ce shell a ajouté des capacités de script qui se sont avérées extrêmement utiles dans la pratique au fil des ans.

Le développement ultérieur de la coque dans les années 1980 a donné naissance à de nombreuses variantes de coque populaires, dont les plus populaires étaient le C-Coque et le Coquille Korn . Chacun de ces shells apportait sa propre syntaxe qui, dans certains cas, était radicalement différente du shell d'origine.



L'un des obus les plus populaires aujourd'hui est le Bash Shell . Bash signifie Bourne-Again-Shell et est une variante considérablement améliorée du Bourne Shell original.

comment ajouter de la texture au texte dans photoshop

Dans cet article, nous décrivons les scripts shell pour le Bash Shell .





2. Exécuter un script shell

Comment exécuter un script shell ? Simple. Passez simplement le chemin du script en argument au shell :

Un exemple de script shell :





echo 'hello world'

Exécutez-le comme suit :

$ bash hello.sh
# prints
hello world

Noter: Le shell exige que les lignes se terminent par des caractères LF (Line-Feed). Si vous écrivez votre script shell sur Windows et essayez de l'exécuter directement sur un système Linux, vous pouvez rencontrer des erreurs. Windows utilise la combinaison CR-LF (Carriage-Return-Line-Feed) pour la terminaison de ligne. Cela doit être converti en LF uniquement. Vérifiez votre éditeur Windows pour savoir comment procéder.

Il existe une autre façon d'exécuter un script shell directement en tant que commande. Insérez la ligne suivante (le hashbang déclaration) comme première ligne de votre script shell.

importer des mots de passe de firefox vers chrome
#!/bin/bash

Avec ce changement, notre script shell simple est désormais :

#!/bin/bash
echo 'hello world'

Maintenant, vous devez rendre le fichier de script exécutable comme suit :

$ chmod +x hello.sh

À ce stade, vous pouvez exécuter le fichier de script directement sans avoir à référencer explicitement le shell.

$ hello.sh
# prints
hello world

Voyons maintenant quelques avantages de l'utilisation de scripts shell.

3. Automatisation des tâches

Le premier avantage de l'utilisation de scripts shell est l'automatisation des tâches fréquemment exécutées. Supposons que vous ayez une tâche que vous devez effectuer tous les jours. Si vous devez exécuter plusieurs commandes sur votre système Linux tous les jours, vous pouvez stocker ces commandes dans un fichier et exécuter le script. Les exemples comprennent:

  • Archivez et téléchargez un fichier ou un dossier tous les jours sur un installation de stockage en nuage comme S3.
  • Compressez les fichiers journaux qui ont tendance à croître chaque jour.
  • Récupérez les cours des actions, analysez les données récupérées et déclenchez un e-mail ou un SMS lorsque certaines conditions sont remplies (prix trop élevés ou trop bas).

4. Combinaison de plusieurs commandes

En plus d'automatiser les tâches fréquentes, vous pourriez également trouver avantageux de pouvoir combiner plusieurs séquences de commandes en une seule commande. Se souvenir d'une seule commande est beaucoup plus simple que plusieurs commandes, sans parler de l'ordre dans lequel elles doivent être exécutées.

Un exemple serait la séquence de démarrage du système d'exploitation Linux lui-même. Dans le cadre du démarrage, le système d'exploitation exécute un certain nombre de commandes pour mettre le système dans un état approprié. Ces commandes sont en fait des scripts shell qui vivent sous le /etc annuaire. Si vous jetez un œil à l'un de ces scripts shell, vous vous rendrez compte de la complexité du démarrage d'un système, que vous auriez peut-être dû effectuer à la main en l'absence de scripts shell.

Ce qui suit est un exemple de script shell, /etc/profil , qui est exécuté à chaque fois qu'un utilisateur se connecte. Imaginez que vous saisissez ces commandes à la main !

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ '$PS1' ]; then
if [ '$BASH' ] && [ '$BASH' != '/bin/sh' ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='h:w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ '`id -u`' -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi

5. Plus facile à développer

Il est possible d'effectuer les mêmes actions qu'un script shell dans un programme normal écrit en C/C++. Cependant, il est beaucoup plus facile d'écrire et de déboguer un script shell qu'un programme C/C++. Surtout pour les tâches d'administration système qui incluent l'exécution de commandes externes, la création et la suppression de fichiers et de répertoires, la redirection de la sortie, etc.

Les programmes C/C++ sont meilleurs pour un niveau d'opération beaucoup plus bas, comme l'appel d'appels système, la manipulation de structures de données, etc.

6. Transparence

Un script shell, du fait qu'il s'agit d'un fichier texte, peut facilement être visualisé pour vérifier les actions qu'il effectue. En revanche, la seule façon de savoir ce que fait un programme écrit dans un langage tel que C/C++ (et compilé en un exécutable) est de savoir s'il choisit de vous le dire ou si vous avez accès au code source. Par exemple, vous pouvez vérifier si un script shell supprime des fichiers, et si vous avez besoin de ces fichiers, vous pouvez les copier dans un autre emplacement.

Il est également beaucoup plus facile de diagnostiquer les problèmes avec les scripts shell plutôt que les programmes normaux puisque vous pouvez consulter le code source. Ce script échoue-t-il parce qu'un répertoire n'existe pas ? Vous pouvez regarder dans le code du script et créer le répertoire (bien qu'un script shell bien comporté devrait le vérifier et le créer pour éviter de telles erreurs).

7. Portable

À script shell peut être transféré vers d'autres systèmes d'exploitation Unix et de type Unix et exécuté (si le shell lui-même est présent). Même lors du transfert d'un script shell à partir de différentes architectures telles que x86, MIPS, Sparc, etc., les scripts shell sont beaucoup plus portables que les programmes C/C++.

La seule façon pour un programme C/C++ d'être transféré et utilisé sur un autre système est de copier le code source, de construire le programme et d'essayer de l'exécuter. Même dans ce cas, il peut ne pas fonctionner comme prévu s'il utilise du code spécifique à l'architecture.

Maintenant que vous avez une idée de ce que sont les scripts shell et de leurs nombreux avantages, n'aimeriez-vous pas les utiliser pour vos tâches ? Quels problèmes avez-vous rencontrés lors de leur utilisation ? Veuillez nous en informer dans les commentaires ci-dessous.

comment fonctionne le fonds des créateurs tiktok
Partager Partager Tweeter E-mail 5 astuces pour booster vos machines Linux VirtualBox

Vous en avez assez des mauvaises performances offertes par les machines virtuelles ? Voici ce que vous devez faire pour améliorer les performances de votre VirtualBox.

Lire la suite
Rubriques connexes
  • La programmation
  • Shell Linux Bash
A propos de l'auteur Jay Sridhar(17 articles publiés) Plus de Jay Sridhar

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner