Verwenden Sie einen Unterstrich in Dateinamen?

25

Ich verwende häufig die Befehlszeile, um in meinen Dateien zu navigieren, sodass ich versuche, keine Leerzeichen in Dateinamen zu verwenden. Normalerweise habe ich einen Unterstrich verwendet, um Wörter zu verbinden, aber kürzlich wurde mir vorgeschlagen, einen Bindestrich zu verwenden. Gibt es irgendwelche Nachteile bei der Verwendung eines Unterstrichs in Dateinamen? Soll ich auf einen Bindestrich umsteigen? Auf meinem System läuft Xubuntu, und ich verwende fast ausschließlich die Bash-Shell.

Vielen Dank

DQdlM
quelle
1
Wenn Sie LaTeX verwenden, müssen Sie den Dateinamen möglicherweise in ein paar Klammern setzen {...}. Im Falle eines automatischen Skripts sollten Sie dies berücksichtigen. Das _wird verwendet, um einen Index zu erstellen und muss eingeschlossen werden, um zB $...$Fehler zu vermeiden. Es generiert jedoch einen Text, der sich von dem unterscheidet, was Sie erwarten. Im erweiterten Terminal von Gnuplot auch ..
Hastur

Antworten:

22

Was das Betriebssystem betrifft, sind beide so benutzbar wie die anderen.

Eine Sache, die ich beachten möchte, ist, dass einige Software (wie zum Beispiel einige Videospielsysteme - XBMC usw.) beim Anzeigen von Dateien Unterstriche automatisch durch Leerzeichen ersetzt, damit sie besser aussehen.

Schon deshalb wäre ich versucht, mich an Unterstriche zu halten.

Außerdem werden Bindestriche für das Wechseln zu Befehlen verwendet, sodass es etwas verwirrend sein kann, Bindestriche sowohl in Ihren Dateinamen als auch in Ihren Befehlsschaltern zu haben.

Ansonsten liegt es nur an der persönlichen Wahl.

Majenko
quelle
1
Ich benutze Hythens, aber das liegt daran, dass ich das Aussehen besser mag. Aus technischen Gründen dahinter.
Beatgammit
Vielen Dank! Das ist, was ich vermutet habe, aber ich habe auch festgestellt, dass es mich in Schwierigkeiten bringen kann, wenn ich nur meinen Verdacht habe.
DQdlM
16

In Dash müssen Sie nicht die UMSCHALTTASTE drücken, um schneller zu tippen. Das ist der einzige andere Vorteil, den ich mir vorstellen kann, als es Mr. Jenkins vorgeschlagen hat.

Wahrscheinlich ist die Person, die diesen Vorschlag macht, ein begeisterter Vim-Benutzer und möchte alles mit der geringsten Tastaturbewegung tun.

LawrenceC
quelle
7
Wenn das der Fall wäre, würden sie vistattdessen - einen Tastendruck weniger;)
Majenko
4
@ Matt es ist sowieso aliased v;-)
Daniel Beck
+1 Aus dem gleichen Grund benutze ich Unterstriche mit Großbuchstaben wie FOO_BAR(ich benutze keine Feststelltaste, also ist es schön, die Umschalttaste die ganze Zeit gedrückt zu halten).
Richard Hansen
@ DanielBeck Ich habe das tatsächlich in meinen Bash-Aliasen sowie gfür git:)
Jan Warchoł
Ich glaube, vim betrachtet zwei Wörter, die durch einen Bindestrich getrennt sind, als ein einziges Wort. Dies könnte ein Grund sein, als vim-Benutzer Unterstriche in Dateinamen zu verwenden.
OddRaven
8

Ich empfehle Unterstriche anstelle von Leerzeichen. Unterstriche sind normalerweise die Konvention, die beim Ersetzen von Leerzeichen verwendet wird, obwohl auch Bindestriche in Ordnung sind, würde ich sagen. Da Bindestriche jedoch möglicherweise auf andere Weise angezeigt werden, z. B. in Form von Wörtern mit Bindestrich, können Sie den Wert eines Namens besser beibehalten, indem Sie Unterstriche verwenden. Wenn Sie beispielsweise eine Datei mit dem Namen "Ein in Winston-Salem, NC.jpg aufgenommenes Bild" haben und die Leerzeichen in Unterstriche umwandeln möchten, können Sie den Bindestrich im Namen beibehalten und seine Bedeutung beibehalten.

Leerzeichen verursachen Probleme für Benutzer, die die Befehlszeile auf fortgeschrittene Weise verwenden möchten, z. B. in for-Schleifen wie folgt:

for file in *.mp3 ; do mpg321 $file -w - | oggenc -o ${file%%.mp3}.ogg - ; done

Wenn eine der mit diesem Platzhalter übereinstimmenden MP3-Dateien Leerzeichen enthält, wird der Dateiname in Abschnitte und nicht in ganze Abschnitte unterteilt. Sie können dies umgehen, indem Sie die IFS-Variable der BASH-Shell ändern oder den Befehl find verwenden. Dies ist jedoch ärgerlich, und viele Leute wissen das nicht, sodass es Probleme verursachen kann.

Ich bezweifle, dass diese oder sogar eine Auto-Sticker-Kampagne Menschen daran hindern würde, Leerzeichen in Dateinamen zu setzen, aber wenn Sie sich selbst helfen möchten, geben Sie Ihnen mehr Kraft und danken Ihnen im Namen derer von uns, die sich darum kümmern.

DeltaRay
quelle
1
Ich stimme vollkommen zu. Ein gut konstruierter Dateiname benötigt keine Leerzeichen.
DQdlM
4
@KennyPeanuts - aber ein gut geschriebenes Programm verschluckt sich nicht an Leerzeichen.
Detly
2
@detly - touche '
DQdlM
1
@detly Nein, ein guter Programmierer versteht, dass es Grenzen geben muss, was Sie tun können und sollten. Wenn Sie sagen, es sollte nicht an Leerzeichen drosseln, dann könnte jemand das herausholen und sagen, es sollte nicht am Zeilenende drosseln, dann würde jemand sagen, es sollte nicht an / drosseln, dann könnte jemand sagen, es sollte nicht drosseln am Ende der Datei. Es gibt ein altes Sprichwort "Formel für das Scheitern: Versuchen Sie, alle zufrieden zu stellen".
Dienstag,
1
Die Dateisystemspezifikation gibt an, wohin codiert werden soll, nicht mehr und nicht weniger. In Ext2 / 3/4 kann ein Dateiname beispielsweise ein beliebiges Zeichen außer \0oder \\\`. Coding to anything less than that is broken by design. So, no, it shouldn't choke on spaces, or EOL, or non-ASCII characters, or anything that isn't \ 0` oder `\` enthalten. Die Verwendung von Bibliotheksfunktionen zur Manipulation von Dateipfaden ist der richtige Weg, da viele andere Personen diese Probleme bereits gelöst haben.
Detly
5

Der einzige Grund, warum Sie in Betracht ziehen sollten, Bindestriche anstelle von Unterstrichen zu verwenden, ist die grundlegende Lesbarkeit. Häufige Unterstriche neigen dazu, den Messwert zu verfälschen, da sich die Sichtlinie von der Mitte der y-Achse nach unten ändert. Bindestriche machen es jedoch leichter für das Auge.

Soweit das Betriebssystem betroffen ist, sind beide Zeichen gleichermaßen gültig und müssen nicht maskiert werden (mit welchen Leerzeichen muss gearbeitet werden).

Varun Madiath
quelle
2
Grundsätzlich empfinde ich die Lesbarkeit als rein subjektiv. Ich finde Unterstriche einfacher zu lesen, weil ich sie visuell so gut wie ignorieren kann - nicht lesen -, während Striche ich sie tatsächlich lesen muss.
Goliatone
3

Ich persönlich bevorzuge Bindestriche gegenüber Unterstrichen, weil Sie für sie nicht die Umschalttaste gedrückt halten müssen. Beachten Sie jedoch Folgendes: Wenn Sie in erster Linie Python-Codierung ausführen und in Ihrem Codebaum Dateien / Verzeichnisse mit Bindestrich enthalten sind und Sie diese als Module verwenden möchten (importieren Sie einen Dateinamen in Ihren Code), führt dies zu Fehlern Python-Module dürfen keinen Bindestrich enthalten. Natürlich gibt es viele Möglichkeiten, Module mit Bindestrich zu importieren, aber ich würde mich an den Unterstrich halten, da er auch den PEP-8-Richtlinien entspricht.

Für die meisten meiner Bin / Programme oder Aliase verwende ich Bindestriche, aber beim Schreiben von Python-Programmen / Modulen verwende ich Unterstriche.

Saurabh Hirani
quelle
2

Es gibt gute Gründe, Bindestriche in einem webbasierten Kontext zu verwenden, der einem Unix-Dateisystem zugeordnet ist.

URL               What search indexes see
foo-baz-bang      foo baz bang
foo_baz_bang      foobazbang

Als Webentwickler hat mich dies dazu gezwungen, mich beim Trennen von Wörtern an Bindestriche zu halten.

reiches remer
quelle
1
Der oben erwähnte Kontext bezieht sich wahrscheinlich unter anderem auf einen Matt Cutts-Blogbeitrag von 2005, in dem Googles algorithmische Präferenz für Bindestriche und Unterstriche als besserer Indikator für einen Platzhalter für Leerzeichen verwendet wird.
jmmygoggle