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 !

Unix / Linux - IO Redirections

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