Guter Stil / gute Praktiken für Trennzeichen in Datei- (oder Verzeichnis-) Namen [geschlossen]

16

Ich bin mir nicht ganz sicher, ob dies eine "richtige" Frage ist, die Sie hier posten können. Ich frage wahrscheinlich mehr nach "Meinungen" als nach tatsächlichen kategorialen Antworten (von denen, die entweder funktionieren oder nicht, und das war's).

Ich habe mich gefragt, welche Namenstrenner am Linux-freundlichsten (oder genauer gesagt, Bash-freundlich ) und menschlichsten sind .

Angenommen, ich möchte ein Verzeichnis erstellen, das etwas enthält, das mit Mr. Foo Bar zusammenhängt ( Foo ist der Vorname, Bar ist der Nachname).

Den Namen " Foo-Bar/" zu haben ist sehr praktisch. -ist ein "normaler" Charakter, es muss nicht entkommen werden, das zeigt es deutlich Foound es Barsind zwei getrennte Dinge ... Nett.

" Foo.Bar" Ist jetzt etwas kniffliger. Jemand könnte denken, dass dies Foo.Bartatsächlich eine Datei ist (auf den ersten Blick, insbesondere wenn Sie keine Terminals mit aktivierter Farbgebung haben), wobei " Foo" der Dateiname und " Bar" die Erweiterung ist.

Ich könnte auch " Foo Bar" verwenden, aber dann muss ich das Leerzeichen umgehen, wenn ich auf das Verzeichnis zugreifen und, wenn ich den Inhalt des übergeordneten Verzeichnisses auflisten möchte (wo Foo Bares sich befindet) und diese Liste in ein Bash - Array einfügen möchte weißer Raum wird Ärger verursachen (viel). Nicht nett.

Klammern ()verursachen auch viele Probleme. Sie müssen auch geflüchtet werden, um Probleme mit Befehlen wie scp... zu verursachen. Nicht schön.

Die Frage ist also (endlich): Wenn Sie den Namen einer Datei auf einen Blick klar und aussagekräftig machen und Trennzeichen verwenden müssen, was verwenden Sie dann?

BorrajaX
quelle
5
Als Referenz: Der POSIX Portable Filename-Zeichensatz .
Jw013
Ich verwende oft Bindestriche, aber das hängt davon ab, was ich tue. Einige mögen Kameltaschen für angemessen halten, wie FooBar.
Klapaucius

Antworten:

14

Kurze Antwort: "Foo _-_ Bar"

Lange Antwort:

Um das Erkennen zu vereinfachen, verwende ich in Bereichen, in denen dies erforderlich ist, in der Regel eine Zeichenfolge. Die Idee ist, etwas zu verwenden, das leicht zu erkennen ist, sodass Sie erkennen, dass dies das Trennzeichen ist, z. B. "_-_" oder " ___ ".

Ein praktisches Beispiel, in dem ich dies verwende, ist meine MP3-Sammlung, in der die Dateinamen Künstler und Songtitel und manchmal die Sequenznummer enthalten. Und wenn Sie eine magische Sequenz verwenden, um sie zu trennen, ist dies sowohl für das Auge als auch für die Skripte einfach. Das MP3-Beispiel könnte ungefähr so ​​aussehen.

  • 01_Blue_Man_Group _-_ Ab.mp3
  • 02_Blue_Man_Group _-_ Time_to_Start.mp3
  • 03_Blue_Man_Group _-_ Sing_Along.mp3

Dies kann nun in Ihr Beispiel übersetzt werden, wenn Foo und Bar zwei logische Dinge sind, die sich nicht mischen sollten, und das könnte dann Foo _-_ Bar sein.

Johan
quelle
2
Auf diese Weise können Sie auch Namen unterscheiden, die bereits Bindestriche (oder Trennzeichen im Allgemeinen) enthalten.
Lynxlynxlynx
1
Auch sehr schön ex parse zu regeln! : ^ (. +) _-_ (. +) \. mp3 $
DanDan
Angesichts der Tatsache, dass Menschen diese Dateien anzeigen würden, ist dies eine gute Antwort. Im Wesentlichen würde ich dies als eine Trennzeichenfolge betrachten; Ein einzigartiges Trennzeichen mit mehreren Zeichen. In Vagrant ist mir aufgefallen, dass die Zeichenfolge VAGRANTSLASHin Dateinamen verwendet wird, in denen die Trennung erfolgt.
ThorSummoner
9

Bei so vielen Zeichen, von denen Sie vielleicht nicht glauben, dass sie etwas Besonderes sein sollten, verwende ich einfach die Sonderzeichen. Dies versetzt mich auch in die Gewohnheit, die Bash-Vervollständigung zu verwenden, bei der alle Sonderzeichen in einem Dateinamen automatisch ausgeblendet werden. Aber es bringt mich auch in die guten Gewohnheiten, ALLES in Skripten und mehrteiligen Einzeilern in Bash zu entkommen / zu zitieren.

Zum Beispiel in einem einfachen 1-Liner:

for file in *.txt; do something.sh "$file"; done

Auf diese Weise wird auch dann, wenn eine der Dateien ein Leerzeichen oder ein anderes Zeichen enthält, der doTeil der Schleife darauf angewendet und es werden nicht 2 oder mehr Dateinamen-Teile übersehen, was möglicherweise unbeabsichtigte Nebenwirkungen hervorruft.

Da ich die Benennung von Leerzeichen / Nicht-Leerzeichen für JEDE Datei, auf die ich stoße, nicht kontrollieren kann und wenn ich es versuche, werden wahrscheinlich einige Symlinks irgendwo unterbrochen, was noch mehr unbeabsichtigte Folgen hat. Ich erwarte nur, dass alle Dateinamen / Verzeichnisnamen Leerzeichen enthalten und zitiere einfach alle Variablen, um sie zu kompensieren.

Also benutze ich einfach beliebige Zeichen (oft Leerzeichen) in Dateinamen.

Ich verwende sogar Leerzeichen in ZFS-Dataset-Namen, was zugeben muss, dass die Entwickler, die die Software für das von mir verwendete NAS schreiben, einiges an Kopfzerkratzen verursacht haben.

Fazit: Leerzeichen sind keine ungültigen Zeichen, daher gibt es keinen Grund, sie nicht zu verwenden.

Killermist
quelle
6

Ich verwende Bindestriche -aus den oben genannten Gründen. Ich vermeide Unterstriche, da sie die Verwendung der Umschalttaste erfordern. Es dauert also mindestens doppelt so lange, sie einzugeben. (Ich denke auch, dass sie hässlich sind.)

Ich bin eher geneigt, dies für Skriptdateinamen zu tun als für alles andere - ich denke, es ist mir wichtiger, klar zu identifizieren, wofür ein Skript gedacht ist. Dokumentdateien sind nur inaktive Daten, Skripts können jedoch bei Missbrauch gefährlich sein.

cas
quelle
5

Ich benutze Unterstriche ( _). Optisch verschwinden sie und sind einfach zu tippen und nichts Besonderes.

Bahamat
quelle
4
Ich finde sie hässlicher als -und schwieriger zu tippen (man muss die Umschalttaste verwenden)
Tshepang