Unix / Linux - Redirections d'entrée/sortie du Shell
Bonjour à tous, futurs magiciens de la ligne de commande ! Aujourd'hui, nous allons entreprendre un voyage passionnant à la découverte des redirections d'entrée/sortie dans le monde du shell Unix/Linux. Ne vous inquiétez pas si vous n'avez jamais écrit une ligne de code auparavant - je vais vous guider à travers cette aventure pas à pas, comme j'ai fait pour des centaines d'étudiants au fil des ans. Alors, mettez vos casques virtuels, et plongeons dedans !
Comprendre les bases
Avant de rentrer dans les détails, penchons-nous sur une simple analogie. Imaginez le shell comme un assistant utile. Normalement, cet assistant lit vos commandes à partir du clavier (entrée standard), affiche les résultats sur l'écran (sortie standard), et affiche également les erreurs sur l'écran (erreur standard). Mais que se passe-t-il si nous voulons changer ce comportement par défaut ? C'est là que les redirections E/S deviennent pratiques !
Redirection de sortie
La magie du '>'
Commençons par la redirection de sortie. Le symbole '>' est notre premier baguette magique. Il nous permet d'envoyer la sortie d'une commande dans un fichier plutôt que sur l'écran.
echo "Bonjour, le monde !" > salutation.txt
Si vous exécutez cette commande, elle ne montrera rien à l'écran. Au lieu de cela, elle créera un fichier nommé 'salutation.txt' contenant "Bonjour, le monde !". Si le fichier existe déjà, il est écrasé. Soyez prudent avec ce pouvoir !
Ajouter avec '>>'
Maintenant, que faire si vous voulez ajouter du contenu à un fichier existant sans l'écraser ? C'est là que '>>' entre en jeu.
echo "Comment ça va ?" >> salutation.txt
Cette commande ajoute "Comment ça va ?" à notre fichier 'salutation.txt'. Si vous ouvrez le fichier maintenant, vous verrez les deux lignes.
Redirection d'entrée
Lire depuis des fichiers avec '<'
Tout comme nous pouvons rediriger la sortie, nous pouvons également rediriger l'entrée. Le symbole '<' nous permet d'utiliser un fichier comme entrée pour une commande.
sort < noms.txt
Cette commande lit le contenu de 'noms.txt' et le trie alphabétiquement. C'est comme dire à la commande 'sort' : "Écoute, au lieu de m'attendre à taper des noms, lis-les dans ce fichier !"
Document Here
La magie du '<<'
Parfois, nous voulons passer plusieurs lignes d'entrée à une commande. C'est là que le 'document here' entre en jeu, en utilisant '<<'.
cat << EOF
Ceci est la ligne 1
Ceci est la ligne 2
EOF
Cette astuce permet de saisir plusieurs lignes jusqu'à ce que le shell rencontre 'EOF' (qui signifie End Of File, mais vous pouvez utiliser n'importe quel mot).
Ignorer la sortie
Le silencieux '/dev/null'
Il arrive des moments où nous exécutons une commande mais ne nous soucions pas de sa sortie. Voici '/dev/null', le trou noir numérique d'Unix/Linux.
ls fichier_inexistant 2> /dev/null
Cette commande essaie de lister un fichier inexistant, mais au lieu d'afficher une erreur, elle la silencieusement ignore. C'est comme avoir un bouton "mute" pour vos commandes !
Commandes de redirection
Voici un résumé des commandes de redirection que nous avons apprises dans un tableau pratique :
Commande | Description |
---|---|
> | Redirige la sortie vers un fichier (écrase) |
>> | Ajoute la sortie à un fichier |
< | Redirige l'entrée depuis un fichier |
<< | Document here (entrée multi-ligne) |
2> | Redirige la sortie d'erreur |
&> | Redirige à la fois la sortie standard et l'erreur |
Exemples pratiques
Maintenant que nous avons couvert les bases, examinons quelques exemples pratiques pour renforcer notre compréhension.
Combining Input and Output Redirection
sort < noms_non_tries.txt > noms_tries.txt
Cette commande lit les noms depuis 'noms_non_tries.txt', les trie, et écrit la liste triée dans 'noms_tries.txt'. C'est comme avoir un organisateur personnel pour vos fichiers !
Rediriger à la fois la sortie et les erreurs
ls /home /inexistant 1> output.txt 2> error.txt
Ici, nous listons deux répertoires. La sortie standard (la liste réussie de /home) va dans 'output.txt', tandis que toute erreur (comme essayer de lister le répertoire inexistant) va dans 'error.txt'.
Utiliser un document here pour l'entrée du script
mysql -u utilisateur -p << EOF
USE ma_base;
SELECT * FROM utilisateurs;
EXIT
EOF
Cet exemple utilise un document here pour exécuter plusieurs commandes MySQL sans avoir à entrer en mode interactif. C'est comme donner une liste de tâches à votre base de données !
Conclusion
Félicitations ! Vous avez刚刚 taken vos premiers pas dans le monde puissant des redirections E/S dans Unix/Linux. souvenez-vous, comme toute compétence, maîtriser ces concepts prend de la pratique. N'ayez pas peur d'expérimenter - c'est ainsi que nous apprenons tous !
Dans mes années d'enseignement, j'ai vu des étudiants passer de la difficulté avec ces concepts à devenir des ninjas de la ligne de commande. L'un de mes étudiants a même plaisanté en disant qu'après avoir appris les redirections E/S, elle se sentait comme une "whisperer de fichiers" - capable de faire circuler les données exactement là où elle le voulait.
Alors, continuez à explorer, continuez à pratiquer, et bientôt vous redirigerez l'entrée et la sortie comme un pro. Qui sait ? Peut-être deviendrez-vous le prochain "whisperer de fichiers" dans votre parcours de codage !
Credits: Image by storyset