it-swarm.com.de

Wird es als bewährte Methode angesehen, bei der Benennung von Dateien keine Großbuchstaben zu verwenden?

Die Leute sagen, Sie sollten bei der Benennung von Unix-Dateien keine Leerzeichen verwenden. Gibt es gute Gründe, keine Großbuchstaben in Dateinamen zu verwenden (d. H. File_Name.txt vs. file_name.txt)? Oder ist das nur eine Frage der persönlichen Präferenz?

29
DD343

Die Leute sagen, Sie sollten keine Leerzeichen in Unix-Dateinamen verwenden.

Die Leute sagen viele Dinge. Es gibt einige Tools, die möglicherweise Fehler machen, aber hoffentlich sind sie zu diesem Zeitpunkt nur wenige, da Leerzeichen ein Virus sind, der von riesigen, firmeneigenen Betriebssystemunternehmen verbreitet wird und jetzt nicht mehr zu vermeiden ist.

Leerzeichen erschweren die Angabe von Dateinamen in der Befehlszeile usw.. Das ist alles. Die einzigen kategorisch verbotenen Zeichen auf * nix-Systemen sind NUL (keine Sorge, es befindet sich nicht auf Ihrer Tastatur oder bei anderen) und /, da dies das Pfadtrennzeichen ist.1 Sonst geht alles. Einzelne Pfadelemente (Dateinamen) sind auf 255 Bytes begrenzt (eine mögliche Komplikation, wenn Sie erweiterte Zeichensätze verwenden) und vollständige Pfade auf 4 KB.

Oder ist dies nur eine Frage der persönlichen Präferenz

Ich würde sagen, dass es so ist. Die meisten DEs scheinen eine Menge großgeschriebener Verzeichnisse in Ihrem $HOME (Downloads, Desktop, Documents - das D ist sehr beliebt), also ist nichts Seltsames daran. Es gibt auch sehr übliche traditionelle Dateien mit Großbuchstaben wie .Xclients und .Xauthority.

Ein Wert der Großschreibung von Dingen am Anfang ist, dass sie, wenn sie lexikografisch aufgelistet werden, vor Kleinbuchstaben stehen - zumindest mit vielen Werkzeugen und abhängig vom Gebietsschema.

Ich bin ein Fan von Camel Case (auch bekannt als CamelCase) und verwende es mit Dateinamen, z. B. /home/goldilocks/blueSuedeShoes - egal was da drin ist. Auf jeden Fall eine Frage der persönlichen Präferenz, aber es hat mir noch keinen Kummer bereitet.

Java-Klassendateien enthalten von Natur aus Großbuchstaben, weil Java Klassennamen dies tun. Und natürlich dürfen wir NetworkManager nicht vergessen, auch wenn einige von uns dies vorziehen würden.


1. Es gibt eine viel abgegrenztere, von POSIX empfohlene "Portable Filename Character Set" , die nicht enthält das Leerzeichen - aber es enthält Großbuchstaben! [~ # ~] posix [~ # ~] gibt auch die allgemeinere Einschränkung in Bezug auf "das Schrägstrichzeichen und das Nullbyte" an an anderer Stelle im selben Dokument . Dies spiegelt sich in langjährigen konventionellen Praktiken wider.

48
goldilocks

Ein Grund, um Großbuchstaben in Dateinamen zu vermeiden, besteht darin, dass bei der Sortierreihenfolge in Unix zwischen Groß- und Kleinschreibung unterschieden wird, sodass Dateien, die mit einem Großbuchstaben beginnen, nicht in der richtigen Reihenfolge angezeigt werden. Das ist der Grund, warum Makefile normalerweise mit einem Großbuchstaben M benannt wird - es ist eine der Dateien, die Sie zuerst sehen möchten, ohne durch a-l Scrollen/überspringen zu müssen.

Dies bedeutet, dass Sie in Bezug auf Dateinamen viel schlechter abschneiden können:

  • durch die Verwendung von Leerzeichen werden einige schlecht geschriebene Programme und Skripte beschädigt, die Dateinamen nicht richtig zitieren
  • das Starten eines Dateinamens mit einem - kann zu Problemen führen, da viele Programme ihn als Befehlszeilenoption anstelle eines Dateinamens sehen (z. B. rm -r entfernt keine Datei mit dem Namen -r).
  • wenn Sie einen Dateinamen mit einem . starten, wird er vor vielen Dienstprogrammen und Shell-Globbing ausgeblendet (z. B. rm * werden keine Dateien wie .config entfernt).
  • die Verwendung von Sonderzeichen wie |<>*? und sogar nicht druckbaren Zeichen wie newline ist technisch möglich, kann jedoch Skripte/Programme ähnlich wie Leerzeichen beschädigen. Der Unterschied besteht darin, dass das Leerzeichen häufig verwendet wird, sodass Programmierer dazu neigen, ihre Programme dagegen zu testen, während weniger beliebte Zeichen häufig nicht getestet werden.
10

Wenn Sie eine Schnittstelle zu einer Windows-Umgebung herstellen möchten, sollten Sie Großbuchstaben vermeiden, da Windows alles in Kleinbuchstaben schreibt. Dies ist häufiger ein Problem in die andere Richtung. ein Link zu Page_2.html wird finden page_2.html unter Windows, schlägt jedoch unter Unix fehl.

6
NL_Derek

Da NL_Derek diese Dose Würmer geöffnet hat, sie aber nicht richtig artikuliert hat, sage ich Folgendes:

Es ist in Ordnung, Großbuchstaben zu verwenden, aber Sie sollten vermeiden, Dateien (im selben Verzeichnis) zu erstellen die sich unterscheiden nur von Fall, z. B. File_Name.txt = undfile_name.txt, Weil

  • Wenn Sie das Verzeichnis auf irgendeine Weise einem Windows-System zur Verfügung stellen, kann es nicht auf beide Dateien zugreifen. Es wird wahrscheinlich nur auf den Namen zugreifen können, der zuerst im Verzeichnis angezeigt wird, unabhängig davon, welchen Namen Sie verwenden. (Außer: Sie können möglicherweise als FILENA~1.TXT Und FILENA~2.TXT Auf sie zugreifen. Geben Sie dir /x Ein, um zu sehen, welcher Kurzname (falls vorhanden) zu welchem ​​Langnamen passt.)
  • Wenn das Dateisystem tatsächlich ein Windows-Dateisystem ist (z. B. von einem exFAT- oder NTFS-Dateisystem von einem NFS-Server unter Windows bereitgestellt), dürfen die beiden Namen (wahrscheinlich) nicht gleichzeitig existieren. Wenn Sie beispielsweise cmd1 > foo Und cmd2 > Foo Ausführen, erhalten Sie möglicherweise eine einzelne Datei, die die Ausgabe von cmd2 Enthält.
  • In ähnlicher Weise dürfen die beiden Namen (wahrscheinlich) nicht gleichzeitig existieren, wenn Sie jemals übertragen die Dateien auf ein Windows-System übertragen. Wenn Sie beispielsweise ein Archiv (z. B. Zip) mit den beiden Dateien erstellt und auf einem Windows-System extrahiert haben, würde die zweite Datei wahrscheinlich die erste überschreiben. Das Gleiche gilt, wenn Sie sie mit FTP oder ähnlichem auf eine Windows-Box übertragen haben.

Ein Grund, um Großbuchstaben zu vermeiden, besteht darin, dass bei der Tab-Vervollständigung von bash (zumindest standardmäßig) zwischen Groß- und Kleinschreibung unterschieden wird - dies immer noch stößt mich jedes Mal an, wenn ich vor einem bash mit Standardkonfiguration. Sicher, es gibt andere beliebte Shells, aber dies kombiniert mit der Tatsache, dass bash unter vielen Betriebssystemen die Standard-Login-Shell ist, bedeutet, dass bei der Standardeinstellung häufig zwischen Groß- und Kleinschreibung unterschieden wird. Die Verwendung von Dateinamen in Kleinbuchstaben vereinfacht die Dinge hier eher.

4

Abgesehen von technischen Gründen habe ich einen praktischen Aspekt. Das Festhalten an Kleinbuchstaben stellt sicher, dass die Suche einfacher ist, es sei denn, man verwendet zu gern grep -i oder locate -i. Manchmal kann sogar camelCase verwirrend sein, wenn eine Zeichenfolge von Wörtern in Groß- und Kleinschreibung wie in storageNYCDCPrimary verwendet werden muss. Daher finde ich es am besten, mich an Kleinbuchstaben zu halten und sie zur besseren Lesbarkeit mit Unterstrichen oder Bindestrichen zu versehen, z. B. storage_nyc_dc_primary.

3
Hopping Bunny

Ich betrachte es wird empfohlen bis vermeiden Sie die Verwendung von Großbuchstaben und Leerzeichen in Dateinamen.

Einige werden sagen, dass sie nicht einverstanden sind, aber es ist eine Sache oder was ich religiöse Überzeugungen nenne : schwer zu diskutieren und zu vereinbaren. Diejenigen, die nicht einverstanden sind, sagen, dass die meisten Tools jetzt so festgelegt sind, dass sie groß- und raumfreundlich sind: Sie haben Recht, aber das ist nicht die Frage.

Die richtige Frage ist wie oft müssen Sie Großbuchstaben verwenden und Leerzeichen in Dateinamen. Auf diese Frage, außer wenn ich in Java programmiere, lautet die Antwort meistens immer: Ich benötige keine Großbuchstaben und Leerzeichen in meinen Dateinamen. Alle Leerzeichen ersetze ich durch einen Unterstrich (_) oder ein Minuszeichen (-), und aus diesem Grund verwende ich keinen Kamelkoffer (auch bekannt als camelCase), der einigen anderen Religionen widerspricht.

Viele Leute riefen mich zum Bullshit an, weil sie das getan und gelehrt hatten - einige von ihnen tun es immer noch -, einige von ihnen stolperten über ein Werkzeug, das nicht kapital-/raumfreundlich war, und kamen zu mir und sagten, ich hätte Recht und sie hätten mir zuhören sollen. Mach was du willst und wenn du Großbuchstaben und Leerzeichen im Dateinamen verwendest, hoffe ich, dass du niemals mit einem schlecht geschriebenen Werkzeug stolpern wirst. Wenn Sie jedoch hoffentlich wieder mit einem solchen Tool arbeiten, ist es nicht schwer zu beheben und kostet Ihr Unternehmen und/oder Sie nicht viel Geld und/oder Zeit. Aber wenn es schlimme Auswirkungen hat, werden Sie sich daran erinnern, dass einige Ihnen in der Vergangenheit gesagt haben, dass die Verwendung von Großbuchstaben und Leerzeichen in Dateinamen eine schlechte Praxis ist.

Und noch eine letzte Sache: wenn Sie alle Probleme vermeiden möchten, nein Sonderzeichen in Dateinamen (nur Kleinbuchstaben, Ziffern, Unterstriche und Minuspunkte [1]). Diese unerwünschte Zeichenliste enthält auch alle Nicht-ASCII-Zeichen (ja, Franzosen und andere Nicht-Engländer - und ich bin einer von ihnen - keine davon: à, â, ä, ç, é, ..., ö, æ, œ , ...). Dies erstreckt sich auch auf viele andere Dinge, einschließlich Login und Passwort. Ich werde Sie raten lassen, was passiert, wenn Sie ein Zitat oder ein doppeltes Zitat setzen (' oder ") in einem Login oder Passwort, das von einem Bash-Skript verarbeitet wird, das nicht von einem bestätigten Systemadministrator geschrieben wurde ....

[1]: Vielleicht könnten wir das auf ~, @, # und einige andere, aber das sucht nach Ärger (und ja, ich weiß über Emacs-Dateien Bescheid ...).

1
jfg956