Bonjour,
Voilà, je suis en train de faire la recode d'un shell de type UNIX. Plus précisément je suis en train de réfléchir à la phase d'exécution et au parcours de mon arbre.
Certains shells, zsh pour ne pas le nommer, gèrent des redirections d'entrées/sorties multiples. Par exemple :
< FICH1 < FICH2 < FICH3 cat
cat > FICH1 > FICH2 > FICH3
Les deux exemples ci-dessus sont les cas les plus simples concernant la problématique des multiples redirections ( < FICH1 ls -l | < FICH2 grep "mot" > FICH3 | wc -l ).
J'arrive à gérer une redirection d'entrée et une redirection de sortie pour chaque commande simple ou chaque enchaînement de pipe, comme ls -l | grep toto | wc -l > FICH ou << EOF cat > FICH.
Ce que j'aimerais, c'est pouvoir gérer plusieurs redirections, comme peut le faire zsh. J'ai essayé de voir comment on pouvait précéder, mais sans succès.
Je pense que copier un fichier dans un autre fichier et ainsi de suite n'est pas "propre" : je redirige le résultat de la commande dans le premier fichier, puis je copie le contenu du premier dans le deuxième et ainsi de suite... Ca m'étonnerait que ce soit la meilleure façon. De même si je copie tous les fichiers d'entrée dans un unique fichier et que je passe le fd de cet unique fichier à dup2.
J'ai essayé de connecter la sortie d'une commande à plusieurs fd, mais c'est sans succès pour le moment.
Je pense qu'il y a de bien meilleures solutions, donc si vous avez des idées/suggestions, je suis preneur. Merci par avance.
Partager