Hallo Ratti, * ratti schrieb am 12.Jun.2002:
nehmen wir an, ich habe sowas:
datei="egal.tmp" mv $datei wichtig.tmp
Wie kann ich sicherstellen, daß das immer funktioniert, auch wenn $datei
mv "$datei" wichtig.tmp
völlig kranke Dateinamen enthält? Also beispielsweise sowas wie:
5 1/2"-Diskette.jpeg
Das geht allerdings grundsätzlich nicht. Keine Datei kann ein / in ihrem Namen enthalten, da der / (slash) der Trenner der Pfadbestandteile ist. / und das ASCII-Zeichen NUL gehen nicht, sonst alles.
Bei dem Projekt, an dem ich gerade schraube, ist _alles_ möglich, daher reicht es mir nicht, zu schreiben
mv "$datei" "wichtig.tmp"
Genauso, wobei im zweiten Teil die " überflüssig sind.
Gibt es eine Möglichkeit, das zu quoten/escapen/whatever? Wohlmöglich etwas, das in allen gängigen Shells funktioniert und nicht nur in der Bash?
Keine Ahnung, wie es in der csh und tcsh aussieht, aber ansonsten ist es überall so richtig, wie Du es oben geschrieben hast.
Ich bräuchte doch wohl als das Resultat: 5\ 1\/2\"-Diskette.jpeg
Oder?
Sehr gern auch für perl, da kommen die Daten ohnehin her.
Geht leider nicht. Hat nichts mit der shell zu tun. Würde auch nicht funktionieren, wenn Du es mit C machst, da macht der Kernel nicht mit. Bernd