Ich habe mich gefragt, wie die Benennungskonvention für Dateien in Unix lautet. Ich bin mir nicht sicher, aber ich denke, es gibt vielleicht eine universelle Namenskonvention, der man folgen sollte?
Zum Beispiel möchte ich eine Datei so benennen: backup
mit part 2
undrandom
Soll ich das so machen:
backup_part2_random
ODER
backup-part2-random
ODER
backup.part2.random
Ich hoffe die Frage ist klar. Grundsätzlich möchte ich ein Format wählen, das der Unix-Philosophie entspricht.
Antworten:
.
wird verwendet, um eine Dateierweiterung zu trennen, zfoo.txt
.-
oder_
wird verwendet, um logische Wörter zu trennen, z . B.my-big-file.txt
oder manchmalmy_big_file.txt
.-
ist besser, weil Sie nicht die Umschalttaste drücken müssen (zumindest bei einer Standard-PC-Tastatur in US-Englisch), andere bevorzugen es,_
weil es eher wie ein Leerzeichen aussieht.Also, wenn ich Ihr Beispiel verstehe,
backup-part2-random
oderbackup_part2_random
der normalen Unix-Konvention am nächsten wäre.CamelCase wird normalerweise nicht auf Linux / Unix-Systemen verwendet. Schauen Sie sich die Dateinamen in
/bin
und an/usr/bin
. CamelCase ist auf Unix- und Linux-Systemen eher die Ausnahme als die Regel.(
NetworkManager
Das einzige Beispiel, an das ich denken kann, ist CamelCase. Es wurde von einem Mac-Entwickler geschrieben. Viele haben sich über diese Namenswahl beschwert. Unter Ubuntu haben sie das Skript tatsächlich in umbenanntnetwork-manager
.)Zum Beispiel
/usr/bin
auf meinem System:und selbst dann verwendet keine der Dateien, die mit einem Großbuchstaben beginnen, CamelCase:
quelle
.
Zeichen kann auch verwendet werden, um Dinge zu drehen, und nicht nur, um eine Erweiterung anzugeben. Zum Beispielmy.log my.log.1 my.log.2.gz
.ls
Ausgabe von/usr/bin
ist eine Referenz. Dies ist eine Frage zu Konventionen. )Viel wichtiger ist, dass eine bestimmte Konvention konsistent ist. Wähle einen Stil und bleibe dabei.
quelle
Meine Einstellung zu Unix / Linux-Dateinamenkonventionen:
Unix / Linux-Dateisysteme unterstützen den Begriff einer Erweiterung nicht von Natur aus. Das Konzept einer Dateierweiterung besteht vollständig als etwas von Dienstprogrammen wie unterstützt
cp
,ls
oder die Shell Sie verwenden. Ich glaube, dass dies auch unter NTFS so ist, aber ich könnte mich irren.Ausführbare Dateien, einschließlich Shell-Skripten, haben normalerweise keine Erweiterung. Skripte haben eine Hash-Bang-Zeile (dh
#!/bin/bash
), die angibt , welches Programm sie interpretieren soll./etc
der Endungtab
ist auch super wichtig, wiefstab
,mtab
,inittab
..d
Verzeichnisnamen angehängt, insbesondere in/etc
, aber dies ist nicht weit verbreitet (UPDATE: https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux )rc
wird häufig für Konfigurationsskripte oder -dateien verwendet, entweder vor (z. B.rc.local
) oder nach (.vimrc
).htm
am Ende von HTML-Dateien unter Unix / Linux.html
.Makefile
in Quellpaketen. Tun Sie dies nur für Dinge wieREADME
.~
wird verwendet, um eine Sicherungsdatei oder ein Verzeichnis wie inimportant_stuff~
oder zu identifizieren/etc~
. Viele Shells wird ein einsames erweitern~
zu$HOME
.lib
. Ausnahme istzlib
und wahrscheinlich ein paar andere.in.
, zin.tftpd
.vmlinuz
bedeutet gezippt, aber ich habe noch nie eine andere Datei mit diesem Namen gesehen.quelle
.sh
"Erweiterung". Ich persönlich finde es etwas ärgerlich, aber ich muss zugeben, dass ich einen guten Grund für die Verwendung des nicht kenne.sh
..sh
für Skripte, die (1) nicht interaktiv ausgeführt werden sollen, sondern nur aus anderen Skripten / Programmen oder (2) eher für die Beschaffung als für die Ausführung bestimmt sind. Für die ersteren müssen sie ausführbar sein; für letztere lasse ich das ausführbare Bit weg und benutze die shebang-Zeile nur zur Dokumentation, für welche Shell die Funktionen geschrieben wurden.#!/bin/zsh
können Sie anhand eines ausführbaren Skripts, das für zsh (dh oben) geschrieben wurde, sicher eine andere Datei mit der Erweiterung .zsh als Quelle angeben und sicherstellen, dass sie zulässigen zsh-Code enthält. Wenn Ihr ausführbares Skript ausschließlich Bourne Shell-kompatibel ist (dh#!/bin/sh
oben), dann wissen Sie, dass die Beschaffung dieser .zsh-Datei problematisch sein wird.In Unix ist Dateiname im Gegensatz zu DOS nur eine Zeichenfolge, bei der Dateiname aus Name und Erweiterung zusammengesetzt wurde. Jeder der angegebenen Dateinamen ist also völlig akzeptabel.
Viele Programme verwenden jedoch immer noch Dateisuffixe, die mit einem Punkt beginnen, um verschiedene Dateitypen zu unterscheiden. Apache Web Server verwendet also Suffixe, um den richtigen MIME-Typ in den Antwort-Headern festzulegen.
quelle
Zwei Gedanken:
Im
Naming Variables, Functions, and Files
Abschnitt der GNU Coding Standards finden Sie:Während IMO sagt "Sie sollten verwenden,
_
weil Emacs" scheint ein bisschen veraltet, ist es dennoch in ihrem "Standards" -Dokument.Nehmen wir für einen Moment an, dass wir uns alle einig sind, dass der Linux-Kernel das A und O * von Linux-Projekten ist und dass die dort verwendeten Konventionen als "Standard" -Konvention angesehen werden können.
grep
Als Quellcode für den Linux-Kernel finden Sie Folgendes:Interessanterweise liegt die Quelle für Git bei 85% für Bindestriche, 3,8% für Unterstriche und 11,1% für beide.
Die Wahl ist klar, Debatte vorbei. ;)
Persönliche Meinung: Ich verwende Bindestriche aus ästhetischen und Shift-Key-Gründen. Wenn Sie in einem Team arbeiten, stimmen Sie ab. Aber um zu wiederholen, was gesagt wurde, sei konsequent .
* oder "be_all and end_all", wenn Sie möchten
quelle
Zeichen, die Sie nicht in Dateinamen verwenden sollten:
Zeichenbegrenzer, die Sie verwenden sollten, um die Lesbarkeit von Namen zu verbessern:
(In einigen Fällen hat ":" jedoch eine besondere Bedeutung.)
quelle
/
Pfadtrennzeichen und das Zeichenfolge-Abschlusszeichen \ 0 (ASCII-Null).Um das zu ergänzen, was andere gesagt haben, würde ich nur sagen, dass akzentuierte Buchstaben und viele Sonderzeichen in Dateinamen zulässig sind und in den folgenden Szenarien Probleme verursachen können:
...
quelle
Halten Sie sich an alphanumerische Dateinamen. Vermeiden Sie Leerzeichen oder ersetzen Sie Leerzeichen durch Unterstriche (_). Begrenzen Sie die Zeichensetzung in Dateinamen auf Punkte (.), Unterstriche (_) und Bindestriche (-). Im Allgemeinen werden Dateinamen in Kleinbuchstaben geschrieben, aber ich verwende CamelCase, wenn der Dateiname mehrere Wörter enthält.
Verwenden Sie Erweiterungen, die den Dateityp angeben. Programme benötigen keine Erweiterungen, da das Ausführungsbit zum Anzeigen von Programmen verwendet wird und die Shells wissen, wie Programme verschiedener Typen ausgeführt werden. Es ist üblich, aber nicht erforderlich, (.sh) für Shell-Skripte und (.pl) für Perl-Skripte. Die ausführbaren Windows-Erweiterungen .bat, .com, .scr und .exe geben die ausführbaren Windows-Dateien unter Unix an.
Wähle einen Standard und halte dich daran. Aber es wird nichts kaputt machen, wenn Sie es vermeiden.
Versteckte (oder Punkt-) Dateien haben Namen, die mit einem Punkt beginnen. Diese werden normalerweise nicht in Verzeichnislisten angezeigt. Verwenden Sie 'ls -a', um die Punktedateien in die Liste aufzunehmen.
quelle
Eine Konvention ist die Verwendung von "_", um Leerzeichen als Trennzeichen zwischen Wörtern zu ersetzen. Andere Zeichen könnten verwendet werden, um Leerzeichen zu ersetzen, aber es gibt etwas stärkere herkömmliche Verwendungen für "-" und "." In Pfadnamen wird daher normalerweise "_" bevorzugt.
Leerzeichen sind in Pfadnamen zulässig, werden jedoch herkömmlicherweise vermieden, da sie die Angabe des Pfadnamens ("Foo-Bar") oder die Maskierung der Leerzeichen (Foo \ Bar) erfordern. Ein korrekt geschriebenes Shell-Skript zitiert Variablen, die möglicherweise Leerzeichen enthalten, insbesondere Pfadnamen. Wenn Sie dies jedoch nicht tun, wird dies häufig übersehen. Bei der Ausführung eines einmaligen Befehls, der über die Befehlszeile eingegeben wird, ist dies eine zusätzliche Eingabe.
Die Verwendung von "-" zum Trennen von Zahlenclustern, z. B. in Zeitstempeln oder Seriennummern, ist eine außerhalb des Dateisystemkontexts häufig verwendete Konvention. Verwenden von "." "Dateierweiterungen" zu trennen, die darauf hinweisen, dass der Dateityp sehr verbreitet ist und einige wichtige Tools davon abhängen. Beispielsweise erwartet das Paketverwaltungssystem unter Red Hat Enterprise Linux und seinen Derivaten, RPM, dass Paketdateien mit ".rpm" enden. Der traditionelle Tarball ist eine tar-Datei (".tar"), die mit einem Gzip (".gz") versehen wurde und so auf ".tar.gz" endet.
Wenn Sie diese zusammenfassen, erhalten Sie häufig Dateinamen, die wie "home_backup_2017-07-01.tar.gz" aussehen.
quelle
Verwenden Sie
-
oder,_
um Dateien_
für Funktionen.
für Erweiterungen zu benennenquelle
Ich stimme David Oneill zu, dass Sie einfach mit etwas gehen sollten.
Aber es ist schön, wenn die Dateien im selben Verzeichnis sortiert werden können , also nicht die Nummer 0 ..10, sondern die Nummer 00 ..10.
Wenn Sie Datumsangaben in Namen verwenden, verwenden Sie ein Standard-Datumsformat wie ISO8601 .
Und haben Sie keine Angst davor, mehrere Zeichen zu verwenden, um logische Teile im Namen zu trennen. Wenn Sie _ (das war 3 _) verwenden, können Sie die regulären Ausdrücke für Dateinamen später vereinfachen.
Ihr Beispiel könnte dann ungefähr so lauten:
Leicht zu lesen und leicht mit Skripten zu analysieren.
quelle
Wörter in einem Dateinamen können entweder mit
_
oder-
gemäß der Unix-Konvention getrennt werden.Wenn Sie verwenden
-
, ist die Eingabe einfacher und erspart Ihnen das Drücken der UMSCHALTTASTE. Aber da es-
so wenig Platz braucht, ist es etwas schwierig, Worttrennungen im Vergleich zu lesen_
. Das_
Trennen von Wörtern lässt es viel sauberer aussehen, da_
es mehr Platz beansprucht.In Shell-Skripten und anderen Computerprogrammen
_
werden Variablen für mehrere Wörter verwendet, zMY_ENVIRONMENT_FILE
. Die Dateinamen verwenden zu machen_
und hält es im Einklang:MY_ENVIRONMENT_FILE=~/my_environment_file
.Wird in der Webentwicklung
-
für die Benennung von Dateien bevorzugt. Ein Grund ist wahrscheinlich, dass die Unterstreichung in Weblinks die Unterstriche verbergen und es möglicherweise schwierig machen kann, wenn Sie den Weblink von Hand eingeben.In den meisten Editoren und Webseiten
this_long_word
kann mit einem Doppelklick die vollständige Auswahl getroffen werden, jedoch nichtthis-long-word
.quelle
-
und_
nehmen nur genau den gleichen Raum! :)_
Sieht selbst bei Monospace-Schriftarten sauberer aus, obwohl sie denselben Platz beansprucht wie-
. Ich hätte das Wort "anscheinend" verwenden sollen. In Bezug auf die_
und-
bei Verwendung von Monospace-Schriftarten lässt sich der Unterschied am besten mit diesem analogen Bild erklären: evsc.net/v8/wp/wp-content/uploads/2010/09/…Es gibt definitiv einen Standard für Linux. Wenn Sie sich die Dateinamen in einem Linux-System ansehen, werden sie mit Bindestrichen in Kleinbuchstaben dargestellt: / usr / bin / ssh-keygen. Dies ist in einem der Linux Standards Base-Dokumente angegeben, die ich derzeit nicht finde. Es wird auch von GNU spezifiziert, das angibt, Unterstriche für Variablennamen und Bindestriche für Dateinamen zu verwenden.
quelle
Hinzufügen zu dem, was alle anderen gesagt haben:
1 - Auch wenn Linux Erweiterungen nicht sonderlich wichtig ist, stellt Windows sicher, dass jede Datei, die Sie jemandem geben möchten, die entsprechende Erweiterung hat.
2-Camel Caps scheinen die am einfachsten zu verwendenden Skripte zu sein, bei denen sich keine Sonderzeichen um Escape-Sequenzen kümmern müssen.
quelle