Am sichersten ist es, den für ein Betriebssystem zulässigen Zeichensatz im Wikipedia-Eintrag zu finden. Es kann von hier aus gefunden werden .
Beispielsweise ist für die meisten Unix-basierten Systeme der zulässige Zeichensatz ein 8-Bit-Satz, und das reservierte Zeichen ist das Nullzeichen (NUL, '\0'
). Es ist jedoch nicht ratsam, die Sonderzeichen in den Dateinamen zu verwenden, da sie beim Entfernen ein Problem darstellen.
Zum Beispiel kann ich einen Dateinamen als haben -ramesh.txt
und ich versuche, ihn wie folgt zu entfernen.
rm -ramesh.txt
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
rm "-ramesh.txt"
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
Ich muss die Datei löschen als,
rm -- "-ramesh.txt"
rm: remove regular empty file `-ramesh.txt'? y
Weitere Details finden Sie auch in dieser Antwort .
Unter Linux und OS-X /
ist meines Erachtens nur der druckbare ASCII-Satz verboten. Einige Zeichen (z. B. Shell-Metazeichen *?!
) verursachen Probleme in der Befehlszeile und erfordern, dass der Dateiname in Anführungszeichen gesetzt oder mit Escapezeichen versehen wird.
Linux-Dateisysteme wie ext2, ext3 sind zeichenunabhängig (ich denke, sie behandeln es nur mehr oder weniger als Byte-Stream - nur Nullen und /
sind verboten). Dies bedeutet, dass Sie Dateinamen in UTF-8-Codierung speichern können. Ich glaube, es liegt an der Shell oder einer anderen Anwendung, zu wissen, welche Codierung verwendet werden muss, um den Dateinamen ordnungsgemäß für die Anzeige oder Verarbeitung zu konvertieren.
Zusammenfassend lässt sich sagen, dass das Problem nicht darin besteht, die Sonderzeichen für Dateinamen zu verwenden, sondern darin, wie damit umzugehen ist.