In Bash eine Befehlsverknüpfung
echo test > actual.txt
ersetzt den Inhalt der aufgerufenen Datei actual.txt
durch "test" und erstellt die Datei, falls sie nicht vorhanden ist. Wenn die Datei jedoch vorhanden ist, öffnet bash sie einfach, schneidet sie ab und schreibt den neuen Inhalt in die Datei.
Insbesondere schlägt der Umleitungsbefehl in diesem Szenario fehl:
ln -s /some/illegal/path link.txt
echo test > link.txt
Bash 4.4.12 gibt mir die verwirrende Fehlermeldung link.txt: No such file or directory
.
Eine Möglichkeit, dies zu vermeiden, besteht darin, die Datei zu löschen, bevor Sie den umgeleiteten Befehl ausführen.
rm link.txt && echo test > link.txt
Ich habe mich jedoch gefragt, ob es einige Optimierungen der Bash-Optionen oder des Umleitungsoperators gibt, die diesen Fehlermodus verhindern. Irgendwelche Ideen?
link.txt
ein Link zu/dir/file
dem/dir
eine Datei des Typs Verzeichnis , in dem Sie schreiben haben und die Erlaubnis suchen, aber/dir/file
nicht existiert (und die Umleitung wäre es ohne eine Fehlermeldung erstellen)? Was ist, wenn/dir/file
es eine reguläre Datei gibt (Gerät, FIFO, Verzeichnis ...) oder Sie keine Schreib- oder Suchberechtigung dafür haben/dir
?