Ist es richtig , bestimmte Sonderzeichen zu verwenden, wie +
, &
, '
, .
(Punkt) und ,
(Komma), im Grunde, in Dateinamen.
Ich verstehe, dass Sie -
und _
ohne Probleme verwenden können, aber bei einigen Nachforschungen konnte ich nichts Bestimmtes über die anderen Symbole finden. Einige sagen, dass Sie es können, andere sagen, dass Sie es nicht können, und andere sagen, dass es "nicht ermutigt" ist, sie zu verwenden (was auch immer das bedeutet).
filenames
unix-philosophy
Chris Klein
quelle
quelle
Antworten:
Ja.
Richtig, aber nicht unbedingt ratsam oder praktisch.
Sie können in modernen Unix- und Linux-Dateisystemen beliebige Zeichen außer null und
/
innerhalb eines Dateinamens verwenden.Sie können ASCII-Interpunktion verwenden . Einige Dienstprogramme verwenden Stopps ( Punkte ) und Kommas in den Namen der von ihnen erstellten Dateien.
Sie können ASCII-Steuerzeichen verwenden , dies ist jedoch nicht ratsam, da es unwahrscheinlich ist, dass sie akzeptabel angezeigt werden und schwierig zu verwenden sind.
Sie können Shell- Metazeichen wie ASCII-Et-Zeichen und ASCII-Apostroph verwenden. Dies ist jedoch unpraktisch und erfordert, dass Sie beim Erstellen von Befehlen besonders darauf achten, solche Zeichen in Anführungszeichen zu setzen oder zu maskieren.
Sie können Multi-Byte-Zeichen mit einer Vielzahl von Codierungen verwenden. Es liegt an der Shell und / oder den Dienstprogrammen, Nicht-ASCII-Zeichen richtig zu interpretieren und anzuzeigen. Es ist ratsam, sich auf eine gängige Codierung wie UTF-8 zu beschränken und das Gebietsschema entsprechend festzulegen.
Bei der Verwendung von druckbaren ASCII-Zeichen treten die wenigsten Probleme auf. Sie beschränken den Satz von Interpunktionszeichen auf Zeichen, die keine Shell-Metazeichen sind, und beginnen einen Namen nicht mit einem Bindestrich (oder einem Stopp - es sei denn, Sie möchten die Datei ausblenden).
quelle
Wie bereits erwähnt, können auf modernen Unix / Linux-Systemen Dateinamen mit Ausnahme von
\0
(NUL) und/
(Schrägstrich) beliebige Zeichen enthalten .Darüber hinaus definiert der POSIX-Standard einen portablen Zeichensatz für Dateinamen:
Das
pathchk
Dienstprogramm von GNU Coreutils prüft dies, wenn es mit der-p
Option aufgerufen wird , und die-P
Option warnt vor leeren Dateinamen (die nicht gültig sind, aber als Argument an übergeben werden könnenpathchk
) und Dateinamen, die mit einem Bindestrich (-
) beginnen.quelle
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.Ich muss die Datei löschen als,
Weitere Details finden Sie auch in dieser Antwort .
Zusammenfassend lässt sich sagen, dass das Problem nicht darin besteht, die Sonderzeichen für Dateinamen zu verwenden, sondern darin, wie damit umzugehen ist.
quelle
-
aber nur um genau zu sein: 1) : Sie müssen nicht die Anführungszeichen um diesen Dateinamen, 2) anstelle der besonderen verwenden--
Argument können Sie genau das tun , wasrm
sich schon sagt:rm ./-ramesh.txt
, also Sie nicht brauchen , es zu tun genau wie du vorschlägst.Ihre Forschung ist fast richtig. Es ist möglich, Sonderzeichen in Dateinamen zu verwenden, dies ist jedoch nicht ratsam, da diese Zeichen eine besondere Bedeutung haben. Konventionen für die Benennung von Dateien in Linux beschreiben andere Einschränkungen für Dateinamen, z. B. "Dateinamen sollten niemals mit einem Bindestrich beginnen."
Einfaches Beispiel für die Ausführung von Befehlszeilenoperationen mit Sonderzeichen in Dateinamen.
Persönlich möchte ich lieber Sonderzeichen in Dateinamen vermeiden, da diese besondere Aufmerksamkeit erfordern, wenn diese Dateien für die Verarbeitung verwendet werden. Damit entfällt die Sorge um den Umgang mit Sonderzeichen aus dem Entwicklungsprozess.
quelle
-
,_
und.
(dot) in Dateinamen?