Bref, ca ne devrait jamais marcher, peu importe la commande, puisque c'est au niveau du shell que le problème se produit.
Tu as raison, le shell traite les redirections AVANT de lancer la commande.
Une commande shell de la forme suivante: cmd fichier > fichier
Se traduit donc par la séquence suivante:
1) Le shell crée un nouveau process (appel système fork)
2) Il ouvre fichier et tronque son contenu (le fichier est donc maintenant VIDE)
3) Il affecte le descripteur de fichier obtenu en 2) à la sortie standard
4) il lance cmd fichierqui se contente d'écrire dans sa sortie standard (appel système exec)
J'ai donc beaucoup de doutes surt le fait que sed -e 's~\#include \"fichier.h\"~~g' 1ドル > 1ドル fonctionne !
On peut par contre jouer avec l'ordre d'évaluation des redirections par le shell pour ne pas avoir à utiliser un nom de fichier intermédiaire: (rm 1ドル; grep -v "\#include \"fichier.h\"" > 1ドル) < 1ドル
[^] # Re: sed -i
Posté par netsurfeur . En réponse au message Tubes : sed vs. grep. Évalué à 6.
Tu as raison, le shell traite les redirections AVANT de lancer la commande.
Une commande shell de la forme suivante:
cmd fichier > fichier
Se traduit donc par la séquence suivante:
1) Le shell crée un nouveau process (appel système fork)
2) Il ouvre fichier et tronque son contenu (le fichier est donc maintenant VIDE)
3) Il affecte le descripteur de fichier obtenu en 2) à la sortie standard
4) il lance cmd fichierqui se contente d'écrire dans sa sortie standard (appel système exec)
J'ai donc beaucoup de doutes surt le fait que sed -e 's~\#include \"fichier.h\"~~g' 1ドル > 1ドル fonctionne !
On peut par contre jouer avec l'ordre d'évaluation des redirections par le shell pour ne pas avoir à utiliser un nom de fichier intermédiaire:
(rm 1ドル; grep -v "\#include \"fichier.h\"" > 1ドル) < 1ドル