Warum funktioniert das Weiterleiten an dieselbe Datei auf einigen Plattformen nicht?
In Cygwin funktioniert der folgende Code einwandfrei
$ cat junk
bat
bat
bat
$ cat junk | sort -k1,1 |tr 'b' 'z' > junk
$ cat junk
zat
zat
zat
In der Linux-Shell (GNU / Linux) scheint das Überschreiben jedoch nicht zu funktionieren
[41] othershell: cat junk
cat
cat
cat
[42] othershell: cat junk |sort -k1,1 |tr 'c' 'z'
zat
zat
zat
[43] othershell: cat junk |sort -k1,1 |tr 'c' 'z' > junk
[44] othershell: cat junk
In beiden Umgebungen wird BASH ausgeführt.
Ich frage dies, weil ich manchmal, nachdem ich Textmanipulationen durchgeführt habe, aufgrund dieser Einschränkung gezwungen bin, die tmp-Datei zu erstellen. Aber ich weiß, dass Sie in Perl das "i" -Flag angeben können, um die Originaldatei nach einigen Operationen / Manipulationen zu überschreiben. Ich möchte nur fragen, ob es eine narrensichere Methode in der Unix-Pipeline gibt, um die mir unbekannte Datei zu überschreiben.