RDP Monster

Qu'est-ce qu'un fichier .sh ? Guide des shell scripts, Bash & Linux

Qu'est-ce qu'un fichier .sh ? Guide des shell scripts, Bash & Linux

Introduction

Les scripts shell sont au cœur de l'administration Linux et Unix : ils offrent des capacités d'automatisation puissantes qui augmentent fortement la productivité et l'efficacité de gestion des systèmes. Un fichier .sh représente un script écrit en langage shell, un langage de programmation spécialisé conçu pour interpréter des commandes et automatiser des tâches système répétitives.

Que vous soyez administrateur système gérant des centaines de serveurs, développeur qui automatise des pipelines de déploiement ou passionné de Linux désireux d'améliorer ses compétences techniques, comprendre les scripts shell est essentiel. Ce guide complet explique ce que sont les fichiers .sh, comment ils fonctionnent, les différentes implémentations de shell et propose des exemples pratiques de scripting en conditions réelles.

 

Qu'est-ce qu'un fichier .sh ?

Définition

Un fichier .sh est un fichier texte brut contenant une série de commandes shell exécutées séquentiellement par un interpréteur shell. L'extension .sh indique que le fichier est un script shell, même si, en pratique, de nombreux scripts shell se passent de cette extension.

Les scripts shell font le pont entre l'usage interactif en ligne de commande et la programmation complète. Ils permettent de :

  • Automatiser les tâches répétitives

  • Combiner plusieurs commandes en workflows complexes

  • Créer des outils d'administration réutilisables

  • Planifier des opérations de maintenance automatisées

  • Déployer des applications de manière programmatique


Caractéristiques

Format texte brut : Contrairement aux programmes qui doivent être compilés, les scripts shell sont du texte lisible par l'humain, interprété directement par le shell.

Basé sur un interpréteur : L'exécution dépend de l'interpréteur shell indiqué (Bash, Ksh, etc.), et non de l'architecture du système sous-jacent.

Ligne shebang : La plupart des scripts shell commencent par un shebang (#!/bin/bash) spécifiant quel interpréteur shell utiliser.

Multiplateforme : Les scripts shell s'exécutent de manière cohérente sur différents systèmes Unix/Linux (en supposant que les shells appropriés soient installés).


Applications réelles

  • Scripts de démarrage et d'arrêt système

  • Automatisation de sauvegarde et restauration

  • Surveillance et alertes serveur

  • Pipelines de déploiement applicatif

  • Traitement et analyse des fichiers de logs

  • Provisionnement de comptes utilisateurs

  • Automatisation de la configuration réseau

  • Tâches de maintenance des bases de données

 

Fondamentaux du shell scripting

Qu'est-ce qu'un shell ?

Un shell est un interpréteur de commandes fournissant une interface entre les utilisateurs et le noyau du système d'exploitation. Il accepte les commandes des utilisateurs, les interprète et exécute les programmes correspondants.

Fonctions du shell :

  • Lire et analyser les commandes utilisateur

  • Rechercher les programmes exécutables

  • Exécuter les programmes avec les arguments appropriés

  • Gérer la redirection des entrées/sorties

  • Gérer le contrôle des processus

  • Implémenter des constructions de programmation (boucles, conditions)


Pourquoi utiliser les scripts shell ?

Automatisation : Exécutez automatiquement des séquences complexes, sans intervention manuelle.

Efficacité : Accomplissez en quelques secondes ce qui pourrait prendre des heures à la main.

Cohérence : Assurez des opérations identiques sur plusieurs systèmes.

Documentation : Les commentaires de script documentent les procédures pour référence future.

Évolutivité : Étendez vos opérations d'un seul serveur à des centaines sans effort supplémentaire.

Restauration : Reconstruisez rapidement vos systèmes grâce aux scripts existants.

 

Bash (Bourne-Again Shell)

Part de marché : ~95 % des systèmes Linux
Créateur : Brian Fox (projet GNU)
Fonctionnalités : Très complètes, capacités de scripting
Syntaxe : Compatible avec le shell Bourne d'origine
Cas d'utilisation : Par défaut sur la plupart des distributions Linux

Bash est le standard de facto pour les scripts shell sous Linux. Il combine compatibilité avec les shells d'origine et fonctionnalités modernes.


Ksh (Korn Shell)

Créateur : David Korn (AT&T Bell Labs)
Fonctionnalités : Capacités de programmation avancées, exécution plus rapide
Syntaxe : Sur-ensemble du shell Bourne
Cas d'utilisation : Privilégié sur les systèmes Unix (Solaris, AIX)
Avantages : Meilleures performances pour les opérations gourmandes en calcul

Ksh reste répandu dans les environnements Unix d'entreprise, en particulier sur les systèmes Unix commerciaux.


Sh (Bourne Shell)

Shell standard POSIX d'origine
Créateur : Stephen Bourne (AT&T Bell Labs)
Fonctionnalités : Minimales et standardisées
Statut actuel : Surtout historique ; les shells contemporains assurent la compatibilité

Sh représente le standard POSIX, garantissant la compatibilité de base sur tous les systèmes de type Unix.


Zsh (Z Shell)

Créateur : Paul Falstad
Fonctionnalités : Fonctions interactives, capacités de scripting
Orientation actuelle : Expérience utilisateur enrichie plutôt que scripting pur
Cas d'utilisation : De plus en plus populaire auprès des développeurs

Zsh représente l'évolution moderne des shells, équilibrant puissance de scripting et fonctionnalités interactives conviviales.


Tcsh/Csh

Créateur de Csh : Bill Joy (Berkeley)
Version moderne : Tcsh (csh amélioré)
Fonctionnalités : Syntaxe proche du C
Statut : Usage en déclin, maintenu principalement pour la compatibilité

Les dérivés de Csh subsistent sur certains systèmes mais offrent des avantages décroissants par rapport à Bash/Ksh.

 

Bash vs Ksh vs autres shells

Tableau de comparaison

Fonctionnalité Bash Ksh Zsh Sh
Historique des commandes Oui Oui Oui Non
Complétion des commandes Basique Basique Avancée Non
Tableaux Indexés Indexés + Associatifs Oui Non
Correspondance de motifs Motifs glob Avancée Avancée Limitée
Fonctions Oui Oui Oui Oui
Arithmétique $(()) (()) $(()) Limitée
Conformité POSIX ~95 % 100 % ~90 % 100 %
Performance Bonne Meilleure Bonne La plus rapide
Fonctionnalités de script Complètes Plus avancées Les plus avancées Minimales
Compatibilité Excellente Excellente Bonne Universelle
Courbe d'apprentissage Modérée Modérée Plus raide La plus facile
Usage typique Linux par défaut Unix d'entreprise Choix des développeurs Compatibilité


Quand choisir chaque shell

Choisir Bash quand :

  • Compatibilité maximale avec les systèmes Linux

  • Travailler avec des outils attendant la syntaxe Bash

  • Familiarité de l'équipe avec Bash

  • Environnements axés sur Linux

Choisir Ksh quand :

  • Opérations critiques en performance

  • Environnements Unix d'entreprise

  • Nécessitant des fonctionnalités de programmation avancées

  • Prise en charge des systèmes Unix hérités

Choisir Zsh quand :

  • Utilisation interactive du shell prioritaire

  • Expérience utilisateur avancée souhaitée

  • Environnements axés sur les développeurs

  • Distributions Linux modernes

Choisir Sh quand :

  • Portabilité POSIX maximale requise

  • Prise en charge de diverses plateformes Unix

  • Minimiser les dépendances

  • Exécution légère essentielle


Créer et exécuter des scripts shell

Créer un script shell de base

Étape 1 : Créer le fichier
touch myscript.sh


Étape 2 : Modifier le fichier
nano myscript.sh

Étape 3 : Ajouter le shebang et les commandes
#!/bin/bash echo "Hello, World!" date

Étape 4 : Rendre le fichier exécutable
chmod +x myscript.sh

Étape 5 : Exécuter le script
./myscript.sh


Méthodes d'exécution

Exécution directe (nécessite les droits d'exécution)
./myscript.sh

Interpréteur explicite
bash myscript.sh

Commande source (exécute le script dans le shell courant)
source myscript.sh or . myscript.sh


Comprendre le shebang

Le shebang (#!) indique quel interpréteur exécute le script :
#!/bin/bash # Use Bash
#!/bin/ksh # Use Ksh
#!/usr/bin/env bash # Use Bash via environment (more portable)
#!/usr/bin/python # Use Python interpreter

 

Syntaxe de base d'un script shell

Variables


Structures conditionnelles

# If-else
if [ $age -gt 18 ]; then
  echo "Adult"
else
  echo "Minor"
fi
 
# Case statement
case $day in
  Monday)
    echo "Start of week"
    ;;
  Friday)
    echo "End of week"
    ;;
  *)
    echo "Midweek"
    ;;
esac


Boucles

# For loop
for i in 1 2 3 4 5; do
  echo "Number: $i"
done
 
# While loop
count=0
while [ $count -lt 5 ]; do
  echo "Count: $count"   
  ((count++))
done
 
# Until loop
until [ $count -eq 10 ]; do
   echo "Count: $count"
  ((count++))
done


Fonctions

# Function definition
greet() {
 echo "Hello, $1!"
}
 
# Function with return value
add() {
  return $(($1 + $2))
}
 
# Function calls
greet "Alice"
add 5 3
echo "Sum: $?" # $? holds return value
 
 

Concepts avancés de scripting

Gestion des erreurs

#!/bin/bash
set -e # Exit on error
 
# Check command success
if ! command_name; then
  echo "Command failed"
  exit 1
fi
 
# Trap errors
trap 'echo "Error on line $LINENO"' ERR


Opérations sur les fichiers

# File existence checking
if [ -f "/path/to/file" ]; then
  echo "File exists"
fi
 
# Directory operations
if [ -d "/path/to/dir" ]; then
 echo "Directory exists"
fi
 
# Read file line-by-line
while IFS= read -r line; do
  echo "Line: $line"
done < filename.txt


Saisie utilisateur

# Read from user
read -p "Enter your name: " name
 
# Read multiple values
read -p "Enter values: " val1 val2 val3
 
# Read into array
read -a array_name
 
 

Exemples pratiques

Script de sauvegarde système

#!/bin/bash
 
# Backup important directories
BACKUP_DIR="/backup"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
echo "Starting backup..."
 
# Create backup directory
mkdir -p "$BACKUP_DIR"
 
# Backup home directory
tar -czf "$BACKUP_DIR/home_$TIMESTAMP.tar.gz" /home
 
# Backup system configuration
tar -czf "$BACKUP_DIR/etc_$TIMESTAMP.tar.gz" /etc
echo "Backup complete: $BACKUP_DIR/home_$TIMESTAMP.tar.gz"


Surveillance de l'espace disque

#!/bin/bash
 
THRESHOLD=80
ALERT_EMAIL="[email protected]"
 
# Check disk usage
disk_usage=$(df / | awk 'NR==2 {print $5}' | cut -d'%' -f1)
 
if [ $disk_usage -gt $THRESHOLD ]; then
  echo "Disk usage critical: $disk_usage%" | mail -s "Alert" $ALERT_EMAIL
  echo "Alert sent to $ALERT_EMAIL"
fi


Provisionnement de comptes utilisateurs

#!/bin/bash
 
read -p "Enter username: " username
read -p "Enter email: " email
 
# Create user
useradd -m -s /bin/bash "$username"
 
# Set password (prompt method recommended)
echo "Set password for $username:"
passwd "$username"
 
# Add to groups
usermod -aG sudo "$username"
echo "User $username created successfully"
 
 

Pourquoi l'administration de serveurs à distance utilise des scripts shell

Les administrateurs système gérant des serveurs distants via des connexions RDP ou SSH exécutent fréquemment des scripts shell pour :

  • Déploiements automatisés : Déployez des applications sur plusieurs serveurs simultanément

  • Maintenance système : Planifiez et exécutez les tâches de maintenance de routine

  • Supervision : Surveillez en continu l'état du système et consignez les anomalies

  • Sauvegardes : Automatisez les procédures de sauvegarde des données critiques

  • Mises à jour de sécurité : Déployez les correctifs de sécurité sur l'infrastructure

Les plateformes professionnelles de gestion de bureau à distance comme RDP.Monster permettent d'exécuter des scripts shell sur l'ensemble de l'infrastructure d'entreprise :


Gestion de l'infrastructure Linux avec RDP.Monster

Gestion Linux d'entreprise

  • Accès SSH pour l'exécution distante de scripts shell

  • Capacités de déploiement automatisé

  • Opérations par lots sur plusieurs serveurs

  • Surveillance et alertes en temps réel

Solutions VPS pour l'infrastructure de scripts

  • Ressources dédiées pour scripts intensifs en calcul

  • Planification persistante des tâches cron

  • Disponibilité fiable pour les opérations planifiées

  • Infrastructure évolutive pour la complexité croissante des scripts

Déployez avec RDP.Monster une infrastructure Linux d'entreprise pour des opérations de scripts shell avancées

 

Conclusion

Les scripts shell sont un puissant outil d'automatisation, indispensable à l'administration système Linux et au développement. Comprendre les fichiers .sh, les implémentations de shell et les techniques de scripting permet aux professionnels de l'informatique d'augmenter considérablement leur productivité, de garantir la cohérence et de gérer efficacement des infrastructures complexes.

Que vous utilisiez Bash sur Linux, Ksh sur Unix d'entreprise ou Zsh pour le développement interactif, maîtriser les scripts shell sépare les administrateurs compétents de ceux qui ne sont que capables. L'investissement dans le développement de solides compétences en scripting offre des retours pendant des décennies de gestion de systèmes Linux.

Vous gérez une infrastructure Linux complexe qui exige une automatisation poussée ? RDP.Monster fournit un accès SSH et une infrastructure VPS optimisée pour exécuter à grande échelle des scripts shell critiques. Découvrez dès aujourd'hui des solutions VPS adaptées à Linux.

Hébergement VPS Linux performant

Bénéficiez d'un contrôle total et de performances fulgurantes avec nos VPS Linux. Parfait pour héberger des applications, gérer des serveurs et optimiser votre workflow.

Serveurs dédiés

Serveurs dédiés haute performance

Besoin d'un contrôle et d'une puissance maximum ? Nos serveurs dédiés offrent des performances inégalées pour les tâches exigeantes.

Foire aux questions

Quelle est la différence entre les scripts .sh et bash ?

.sh est une extension générique pour les scripts shell (n'importe quel shell) ; bash désigne spécifiquement le shell Bash.

Un script bash fonctionne sous .sh, mais tous les scripts .sh ne sont pas du bash.

Faut-il utiliser #!/bin/bash ou #!/usr/bin/env bash ?

Utilisez #!/usr/bin/env bash pour la portabilité sur des systèmes où bash peut être installé à des emplacements non standards.

Pourquoi mes scripts échouent-ils lorsqu'ils sont lancés via cron ?

Cron tourne dans un environnement minimal.

Utilisez des chemins absolus, définissez explicitement les variables d'environnement et spécifiez le chemin complet de l'interpréteur dans le shebang.

Comment rendre un script exécutable ?

Utilisez chmod +x scriptname.sh pour ajouter les droits d'exécution.

Puis-je exécuter des scripts shell sous Windows ?

Windows Subsystem for Linux (WSL) ou Git Bash permettent d'exécuter des scripts shell.

Windows natif privilégie PowerShell pour l'automatisation.

Quelle est la différence entre les commandes . et source ?

Elles sont équivalentes dans Bash : toutes deux exécutent les scripts dans le shell courant.

source est plus explicite ; . est compatible avec d'anciens shells.

Comment déboguer un script shell ?

Voici la solution :

Utilisez bash -x scriptname.sh pour une trace d'exécution ligne par ligne, ou ajoutez set -x dans le script.

Puis-je passer des arguments aux scripts shell ?

Oui !

Utilisez les paramètres positionnels : $1 (premier argument), $2 (deuxième), etc. $@ contient tous les arguments.

Adrien Roche, Rédacteur infrastructure & hébergement

Ingénieur systèmes avec plus de 10 ans d'exploitation de parcs Windows Server et Linux. Adrien gère la documentation infrastructure de rdp.monster et rédige nos guides sur le RDP, l'hébergement VPS, l'administration serveur, le réseau et les outils de confidentialité.

Inscrivez-vous à notre programme revendeur

Vos informations

Si vous avez une question, contactez-nous en cliquant ici !
Nom(Obligatoire)
Indiquez votre adresse e-mail, vous devez avoir un compte sur manager.rdp.monster !

Votre entreprise

Indiquez l'adresse de votre site web si vous en avez un
Expliquez brièvement comment vous comptez vendre les services à vos clients. Par exemple, en discutant avec des gens sur des forums.

Même les monstres aiment les cookies !

Nous utilisons des cookies pour améliorer votre expérience de navigation, proposer des publicités ou contenus personnalisés et analyser notre trafic. En cliquant sur « Accepter », vous consentez à notre utilisation des cookies.