Intro
Parfois, nous voyons des commandes comme celle-ci dans le shell:
- $ ls foo > /dev/…null 2>&1
Il peut être difficile de comprendre ce que cela fait pour la première fois, donc cette note l’expliquera brièvement.
Redirection E/S
Supposons que vous ayez maintenant un simple fichier texte :
Dirigeons maintenant le contenu de ce fichier vers un autre emplacement:
Dans l’action de redirection ci-dessus, nous ne voyons aucune sortie affichée sur le terminal, car la commande > redirige le contenu de test.txt vers…output.txt, qui est une sortie standard (stdout).
A la différence de la sortie standard, il y a l’erreur standard (stdr), par exemple
Une erreur s’est produite pendant le processus de redirection car il n’y a pas de fichier portant le nom no_such_file.txt dans le répertoire ci-dessous. Dans ce cas, même si la commande > est utilisée, il n’est pas possible de saisir le contenu dans output.txt, car il n’y a pas de stdout, mais un message d’erreur de stderror à la place.
Descripteur de fichier
Le descripteur de fichier peut être considéré comme un entier positif pour un fichier ouvert. Si vous avez 100 fichiers ouverts, vous avez fondamentalement 100 descripteurs de fichiers correspondants.
Dans les systèmes Unix/Unix-like, il existe également des descripteurs de fichiers dédiés à stdout et stderr, qui, pour être clair, ont des destinations dédiées pour la sortie de ces…pour ces destinations de sortie :
- 1 : pour stdout
- 2 : pour stderr
Mise en commun
Selon le concept ci-dessus, si vous voulez écrire le contenu d’un fichier connu dans un autre fichier, vous pouvez le faire.