Erzwingen, dass das System mir erlaubt, beliebige Zeichen in den Dateinamen einzufügen

Erzwingen, dass das System mir erlaubt, beliebige Zeichen in den Dateinamen einzufügen

Ich hatte diese Woche eine Prüfung und eine der Fragen war (mit einer richtigen Antwort):

Der Dateiname kann die folgenden Zeichen enthalten:

A)\

B)/

C)?

D)!

Ich habe gewählt c) ?, weil es für mich OK aussah. Als ich nach Hause kam, habe ich es auf meinem Rechner (Ubuntu 14.04) getestet und die Datei wurde erfolgreich erstellt. Im Rechenschieber ist die richtige Antwort als markiert d) !.

Ich wusste, dass die Prüfung Windows-spezifisch war, aber im Prüfungsbogen wurde die Plattform nicht angegeben.


Es ist klar, dass \und /Zeichen in einem Dateinamen nicht unterstützt werden,ABERgibt es eine Möglichkeit, das Betriebssystem zu zwingen, sie zuzulassen?

Es wäre wirklich cool, zu beweisen, dass sogar \und /Zeichen unterstützt werden.

Antwort1

Bei der Betrachtung der in einem Dateinamen zulässigen Zeichen gibt es zwei einschränkende Faktoren: Einschränkungen in Bezug auf das Betriebssystem und Einschränkungen in Bezug auf das Dateisystem. Für diese Frage gehe ich davon aus, dass wir über aktuelle Versionen von Linux und ext4 sprechen.

Linux verbietet in Dateinamen nur zwei Zeichen: /, weil es das Pfadtrennzeichen ist, und \0(ASCII NUL), weil es C-Strings beendet. Darüber hinaus sind die Sondernamen .und ..vom Dateisystem für die Verwendung als Navigations-Hardlinks reserviert.

Dass auch die anderen in deiner Frage genannten Zeichen zulässig sind, kannst du ganz einfach nachweisen:

$ touch '\' '?' '!'
$ ls
!  ?  \

verwandte Informationen