Ce qui est nécessaire, c'est de commencer l'écriture au début du fichier de sortie --- les détails du sort des anciennes données dépendant du support et du système de fichiers.
Dans le cas d'une ligne de commande cmd option fichier1 >fichier2 ,
le shell ne sait pas que fichier1 est un nom de fichier ;
la commande cmd ne sait pas que sa sortie standard sera détournée vers fichier2...
Seul le noyau est en mesure de voir que les deux noms (distincts ou pas) pointent sur le même inode. Par ailleurs, sur une machine chargée, les opérations d'entrée-sortie peuvent être plus ou moins différées...
On pourrait rajouter des contrôles idiot-proof, mais comme dit le proverbe, c'est alors une course avec la nature qui produit de meilleurs idiots ;)
Pour répondre aussi à Kerro, Sed = stream editor : c'est un éditeur de flux, au code très comapct, qui s'occupe surtout de traiter son flux de données. L'option -i est juste un cadeau aux fainéants pour ne pas avoir à gérer le fichier temporaire (et, accessoirement, leur évite de se tirer une balle dans le pied avec <fic >fic ).
On trouvera des discussions plus approfondies sur les redirections du shell sur news:fr.comp.os.unix, ou dans l'Advanced Bash-scripting Guide (traduit en français).
[^] # Re: sed -i
Posté par Jacques L'helgoualc'h (site web personnel) . En réponse au message Tubes : sed vs. grep. Évalué à 1.
- le shell ne sait pas que fichier1 est un nom de fichier ;
- la commande cmd ne sait pas que sa sortie standard sera détournée vers fichier2...
Seul le noyau est en mesure de voir que les deux noms (distincts ou pas) pointent sur le même inode. Par ailleurs, sur une machine chargée, les opérations d'entrée-sortie peuvent être plus ou moins différées... On pourrait rajouter des contrôles idiot-proof, mais comme dit le proverbe, c'est alors une course avec la nature qui produit de meilleurs idiots ;) Pour répondre aussi à Kerro, Sed = stream editor : c'est un éditeur de flux, au code très comapct, qui s'occupe surtout de traiter son flux de données. L'option -i est juste un cadeau aux fainéants pour ne pas avoir à gérer le fichier temporaire (et, accessoirement, leur évite de se tirer une balle dans le pied avec <fic >fic ). On trouvera des discussions plus approfondies sur les redirections du shell sur news:fr.comp.os.unix, ou dans l'Advanced Bash-scripting Guide (traduit en français).