Die Leute sagen, Sie sollten keine Leerzeichen bei der Benennung von Unix-Dateien verwenden. Gibt es gute Gründe, in Dateinamen keine Großbuchstaben zu verwenden (z. B. File_Name.txt
vs. file_name.txt
)? Oder ist das nur eine Frage der persönlichen Präferenz?
28
Antworten:
Die Leute sagen eine Menge Dinge. Es gibt einige Tools, die möglicherweise versagen, aber hoffentlich sind sie zu diesem Zeitpunkt nur wenige, da Leerzeichen ein Virus sind, der von riesigen, firmeneigenen OS-Unternehmen verbreitet wird und jetzt nicht mehr zu vermeiden ist.
Leerzeichen machen die Angabe von Dateinamen in der Befehlszeile usw. umständlich. Das ist alles. Die einzigen kategorisch verbotenen Zeichen auf * nix-Systemen sind NUL (keine Sorge, sie befinden sich nicht auf Ihrer Tastatur oder auf der anderer) und
/
da dies das Pfadtrennzeichen ist. 1 Sonst geht nichts. Einzelne Pfadelemente (Dateinamen) sind auf 255 Byte begrenzt (eine mögliche Komplikation, wenn Sie erweiterte Zeichensätze verwenden) und vervollständigen Pfade auf 4 KB.Ich würde sagen, dass es so ist. Die meisten von DE scheinen eine ganze Reihe von aktivierten Verzeichnisse in Ihrem erstellen
$HOME
(Downloads
,Desktop
,Documents
- dasD
ist sehr beliebt), so gibt es nichts bizarr darüber. Es gibt auch sehr alltägliche traditionelle Dateien mit Großbuchstaben wie.Xclients
und.Xauthority
.Ein Vorteil der Aktivierung von Dingen am Anfang ist, dass sie, wenn sie lexikografisch aufgelistet sind, vor Kleinbuchstaben stehen - zumindest mit vielen Werkzeugen und abhängig vom Gebietsschema.
Ich bin ein Fan von Camel Case (auch bekannt als CamelCase) und benutze es zum Beispiel mit Dateinamen
/home/goldilocks/blueSuedeShoes
- egal was drin ist . Auf jeden Fall eine Frage der persönlichen Präferenz, aber es hat mir noch keinen Kummer bereitet.Java-Klassendateien enthalten in der Regel von Natur aus Großbuchstaben, da dies bei Java-Klassennamen der Fall ist. Und natürlich nicht vergessen
NetworkManager
, auch wenn einige von uns es vorziehen würden.1. Es gibt einen viel weiter abgegrenzten, von POSIX empfohlenen "Portable Filename Character Set" , der kein Leerzeichen enthält - aber Großbuchstaben enthält! POSIX gibt auch die allgemeinere Einschränkung bezüglich "des Schrägstrichs und des Null-Bytes" an einer anderen Stelle im selben Dokument an . Dies spiegelt die langjährigen konventionellen Praktiken wider oder spiegelt sich in ihnen wider .
quelle
README
s undMakefile
s und so weiter.Ein Grund, um Groß- und Kleinschreibung in Dateinamen zu vermeiden, besteht darin, dass bei der Sortierung in Unix die Groß- und Kleinschreibung beachtet wird, sodass Dateien, die mit einem Großbuchstaben beginnen, nicht in der richtigen Reihenfolge angezeigt werden. Aus diesem Grund
Makefile
wird der Name normalerweise in Großbuchstaben geschriebenM
- es handelt sich um eine der Dateien, die Sie zuerst anzeigen möchten, ohne sie zu scrollen oder zu überspringena-l
.Das heißt, Sie können in Bezug auf Dateinamen viel schlimmer machen:
-
kann zu Problemen führen, da es in vielen Programmen als Befehlszeilenoption anstelle eines Dateinamens angezeigt wird (z. B.rm -r
wird eine genannte Datei nicht entfernt-r
)..
wird er vor vielen Dienstprogrammen und Shell-Globbing verborgen (z. B.rm *
werden Dateien wie nicht entfernt.config
).|<>*?
und sogar nicht druckbaren Zeichen wienewline
ist technisch möglich, kann jedoch Skripte / Programme, die Leerzeichen ähneln, 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.quelle
rm *
werden keine Dateien wie entfernen.config
?Makefile
undREADME
ist ein perfektes Beispiel dafür. Beachten Sie auch, dass dieser Effekt vernachlässigbar ist, wenn der Buchstabe nicht der erste Buchstabe im Namen ist. Wenn Sie camelCase verwenden, ist dies also keine große Sache. Sicher, es könnte Sie überraschen, esanOctagon
vorher zu sehenangle
, aber zumindest wären sie in der Liste zusammen.Wenn Sie mit einer Windows-Umgebung arbeiten, sollten Sie Großbuchstaben vermeiden, da Windows alles in Kleinbuchstaben schreibt. Dies ist häufiger ein Problem in umgekehrter Richtung. Ein Link,
Page_2.html
derpage_2.html
in Windows zu finden ist , in Unix jedoch fehlschlägt.quelle
NUL
und/
verboten.cat > Foo
wird die Datei überschriebenfoo
. Dieses Verhalten ist wahrscheinlich unerwartet und verwirrend, wenn Sie an Dateisysteme mit Groß- und Kleinschreibung wie ext * gewöhnt sind.\0
und/
, Groß- und Kleinschreibung). Zumindest erinnere ich mich daran. Aber ich stimme zu, dass es eine Art Durcheinander ist. Es gibt weitere Einschränkungen in der…Ein Grund zu vermeiden Kappen ist , dass
bash
s tabcompletion ist case-sensitive (zumindest Standard) -Das noch stellt mich jedes Mal , wenn ich vor einem Ende obenbash
mit Standardkonfiguration. Natürlich gibt es auch andere populäre Shells, aber in Kombination mit der Tatsache, dassbash
es sich bei vielen Betriebssystemen um die Standardanmeldeshell handelt, wird bei der Standardeinstellung häufig zwischen Groß- und Kleinschreibung unterschieden. Die Verwendung von Dateinamen in Kleinbuchstaben vereinfacht die Sache hier eher.quelle
echo set completion-ignore-case On >> ~/.inputrc
kann ein bisschen helfen, zumindest auf Ihrem eigenen System.Foo
und einem späteren Typcat f
(Tab) erstellen, schlägt dies fehl. Das Gleiche passiert jedoch, wenn Sie etwas eingebencat foo
,cat Foobar
odercat Fu
- die Tatsache, dass Sie Probleme haben, auf eine Datei zuzugreifen, deren Namen Sie sich nicht richtig merken, hat eigentlich nichts mit der automatischen Vervollständigung zu tun.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 nur in Groß-
File_Name.txt
und Kleinschreibung unterscheiden , z. B. undfile_name.txt
, weilFILENA~1.TXT
undFILENA~2.TXT
- geben Sie ein, umdir /x
zu sehen, welcher Kurzname (falls vorhanden) zu welchem Langnamen passt.)cmd1 > foo
cmd2 > Foo
cmd2
quelle
Abgesehen von technischen Gründen habe ich einen praktischen Aspekt. Wenn Sie sich an Kleinbuchstaben halten, wird die Suche einfacher, es sei denn, Sie verwenden zu gern grep -i oder locate -i. Manchmal kann sogar camelCase verwirrend sein, wenn man eine Folge von Wörtern wie in storageNYCDCPrimary verwenden muss. Daher halte ich es für das Beste, Kleinbuchstaben beizubehalten und sie mit Unterstrichen oder Bindestrichen zu versehen, um die Lesbarkeit zu verbessern, beispielsweise storage_nyc_dc_primary.
quelle
storageNycDcPrimary
undStorageNycDcPrimary
beide sind seltsam zu lesen.Ich halte es für empfehlenswert, Groß- und Kleinschreibung in Dateinamen zu vermeiden .
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 sich nicht einig sind, sagen, dass die meisten Werkzeuge jetzt als Kapitelle und als raumfreundliche Werkzeuge festgelegt sind: Sie haben Recht, aber das ist nicht die Frage.
Die richtige Frage ist, wie oft Sie Groß- und Kleinschreibung in Dateinamen verwenden müssen. Auf diese Frage, mit der Ausnahme , wenn ich in Java bin Programmierung ist die Antwort meist die ganze Zeit: Ich brauche keine Kapitelle und Räume in meinen Dateinamen . Alle Leerzeichen, die ich durch einen Unterstrich (
_
) oder ein Minuszeichen (-
) ersetze , und aus diesem Grund benutze ich keine Kamel-Hülle (aka. CamelCase), die im Gegensatz zu anderen Religionen steht.Viele Leute haben mich beschimpft, weil ich das getan und gelehrt habe - manche tun es immer noch -, manche sind mit einem Werkzeug gestolpert, das nicht kapital- / platzfreundlich war, und kamen zu mir und sagten, dass ich Recht habe und dass sie auf mich hätten hören sollen. Tun Sie , was Sie wollen , und wenn Sie im Dateinamen Groß- und Kleinbuchstaben und Leerzeichen verwenden, werden Sie hoffentlich nie mit einem schlecht geschriebenen Werkzeug stolpern. Wenn Sie jedoch mit einem solchen Tool arbeiten, wird es hoffentlich nicht schwer zu beheben sein und Ihr Unternehmen und / oder Sie viel Geld und / oder Zeit kosten. 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 eine letzte Sache, wenn Sie alle Probleme vermeiden wollen , keine Sonderzeichen in Dateinamen (nur Kleinbuchstaben, Ziffern, Unterstriche und Minuszeichen [1]). Diese Liste unerwünschter Zeichen enthält auch alle nicht-ASCII-Zeichen (ja, Franzosen und andere nicht-englische Personen - und ich bin einer von ihnen - keine von diesen: à, â, ä, ç, é, ..., ö, æ, œ , ...). Dies erstreckt sich auch auf viele andere Dinge, einschließlich Login und Passwort . Ich werde Sie raten lassen, was passiert, wenn Sie ein Anführungszeichen oder ein Anführungszeichen (
'
oder"
) in ein Login oder Passwort einfügen, das von einem Bash-Skript behandelt wird, das nicht von einem bestätigten Systemadministrator geschrieben wurde.[1]: Vielleicht könnten wir erweitern das zu
~
,@
,#
und einige andere, aber für Probleme sucht (und ja ich weiß , über Emacs - Dateien ...).quelle