Les redirections permettent de diriger les entrées/sorties des commandes, et les pipes de chaîner les commandes.
# Rediriger la sortie vers un fichier (écrase le contenu)
echo "Bonjour" > fichier.txt
# Ajouter à la fin d'un fichier
echo "Nouvelle ligne" >> fichier.txt
# Rediriger les erreurs
ls dossier_inexistant 2> erreurs.txt
# Rediriger sortie et erreurs
commande > sortie.txt 2>&1
# Rediriger l'entrée
sort < liste.txtLes pipes permettent de connecter la sortie d'une commande à l'entrée d'une autre :
# Compter le nombre de fichiers
ls | wc -l
# Chercher un processus
ps aux | grep firefox
# Trier et afficher les 5 premiers
cat notes.txt | sort | head -5
# Chaîner plusieurs commandes
cat fichier.txt | grep "erreur" | sort | uniq# Trouver tous les fichiers .txt
find . -name "*.txt"
# Trouver les fichiers modifiés dans les 7 derniers jours
find . -mtime -7
# Trouver les fichiers plus grands que 10MB
find . -size +10M
# Trouver et supprimer
find . -name "*.tmp" -delete
# Trouver et exécuter une commande
find . -name "*.log" -exec cat {} \;# Chercher un mot dans un fichier
grep "erreur" fichier.log
# Chercher récursivement dans tous les fichiers
grep -r "TODO" .
# Ignorer la casse
grep -i "error" fichier.log
# Afficher le numéro de ligne
grep -n "function" script.sh
# Chercher avec regex
grep -E "[0-9]{3}-[0-9]{4}" contacts.txt# Créer une variable
nom="Alice"
# Utiliser une variable
echo "Bonjour $nom"
echo "Bonjour ${nom}!"
# Variables d'environnement
export MA_VARIABLE="valeur"
# Afficher toutes les variables d'environnement
env
# Afficher une variable spécifique
echo $PATH
echo $HOME
echo $USERLes permissions se lisent ainsi : rwxrwxrwx
Les 3 groupes représentent : propriétaire, groupe, autres
# Avec chmod en notation symbolique
chmod u+x script.sh # Ajoute exécution pour le propriétaire
chmod g-w fichier.txt # Retire écriture pour le groupe
chmod o+r document.pdf # Ajoute lecture pour les autres
chmod a+x programme # Ajoute exécution pour tous
# Avec chmod en notation octale
chmod 755 script.sh # rwxr-xr-x
chmod 644 fichier.txt # rw-r--r--
chmod 600 secret.txt # rw-------
# Changer le propriétaire
chown utilisateur fichier.txt
chown utilisateur:groupe fichier.txt#!/bin/bash
# Mon premier script
echo "Bonjour ! Quel est votre nom ?"
read nom
echo "Enchanté, $nom !"
# Afficher la date
echo "Nous sommes le $(date +%d/%m/%Y)"#!/bin/bash
if [ -f "fichier.txt" ]; then
echo "Le fichier existe"
else
echo "Le fichier n'existe pas"
fi
# Test numérique
age=25
if [ $age -ge 18 ]; then
echo "Majeur"
fi
# Test de chaîne
if [ "$nom" = "Alice" ]; then
echo "Bonjour Alice !"
fi-f : fichier existe-d : dossier existe-eq : égal (nombres)-ne : différent-gt : plus grand que-lt : plus petit que#!/bin/bash
# Boucle for sur une liste
for fruit in pomme banane orange; do
echo "J'aime les ${fruit}s"
done
# Boucle for sur des nombres
for i in {1..5}; do
echo "Itération $i"
done
# Boucle for sur des fichiers
for fichier in *.txt; do
echo "Traitement de $fichier"
done
# Boucle while
compteur=1
while [ $compteur -le 5 ]; do
echo "Compteur: $compteur"
((compteur++))
done