Ich habe eine Funktion, die prüft, ob der übergebene Dateiname .
oder ist ..
. Aber ich weiß nicht, wie ich es richtig benennen soll. So etwas IsCurrentOrParentDirectory()
ist mehrdeutig, da die Funktion einen Dateinamen und keinen vollständigen Pfad annimmt. (Intuitiv würde ein Programmierkollege erwarten, dass er /usr/
während meiner /usr/
Rückkehr verstirbt true
, obwohl dies eigentlich nicht der Fall ist.)
Gibt es einen Fachbegriff für diese Verzeichniseinträge? Wenn es eins gibt, was ist es dann?
path
technical-writing
Max Truxa
quelle
quelle
.
und..
sind Dateinamen nach dem POSIX-Standard. Siehe mein Zitat unten. Ich würde sagen, dass es hier in Ordnung ist, da es um allgemeine Computerkonzepte geht.foo.bar
,foo
, ...) , aber keinen Pfad (foo/bar
,/foo/
, ...). Aber da Verzeichnisse, Links usw. auch Dateien sind, lasse ich es so.Antworten:
Aus dem POSIX-Standard :
Also wirklich, wenn Sie überprüfen möchten, ob der Dateiname ist
.
oder ob..
Sie ihn aufrufen müssenIsDotOrDotDot()
, oder wenn Sie die POSIX-Terminologie der Pfadnamenauflösung verwendenIsPredecessorOrParentOfPredecessor()
, oder vielleicht sogarPointsToPredecessorOrParentOfPrecedessor()
... Sie haben die Idee. Das Problem ist, dass die letztere Terminologie nur bei der Betrachtung vollständiger Pfadnamen Sinn macht. Aber das würde sowieso niemand verstehen.In Anbetracht dessen
.
und weil..
es sich um gültige Dateinamen handelt (die nur unterschiedlich interpretiert werden), sollten Sie sich nur an das halten, was Sie haben, und sich auf die Bedeutung verlassen, anstatt darauf, wie sie intern aufgerufen werden.quelle
.bash_history
Punkt oder nicht Punkt? Ich bin nicht sicher, ob dieser Funktionsname aussagekräftiger ist als das vom OP vorgeschlagene Öffnen..
oder..
war und nicht, ob sie gerade mit a begann.
. Natürlich ist der Funktionsname des OP aussagekräftiger. Ich habe ihn nur darauf hingewiesen, wie es technisch gemeint ist.IsDotOrDotDot()
sagt aber so ziemlich nichts darüber aus, was die Funktion überhaupt macht.IsDotOrDotDot
. Jeder, der sich mit Dateisystemkonzepten auskennt, würde es sofort verstehen. Es ist fraglich, ob.bash_history
"Punkt" ist, da dann für die Bedeutung von "Punkt" kein Kontext bereitgestellt wird, aber es ist definitiv NICHT "Punkt oder Punktpunkt"..
und..
werden normalerweise verwendet, um relative Pfade im Vergleich zu absoluten Pfaden zu beschreiben/usr
. Ich würde diesen Unterschied nutzen und die Funktion als deklarierenIsRelativeCurrentOrParentDirectory()
.Beachten Sie, dass die Punktreferenzen an einer beliebigen Stelle im Pfad auftreten können. Was ist
/usr/local/..
?quelle
Der POSIX-Standard, der sinnvollerweise zitiert wird, besagt:
(Betonung hinzugefügt). Also, obwohl es nicht gerade technisch ist , sieht es so aus, als ob "spezieller Dateiname" der offizielle Name sein könnte. Ihre Nutzer wäre es wahrscheinlich verstehen , wenn Sie Ihre Funktion eine der folgenden genannt:
IsSpecialDirectory()
,IsSpecialFilename()
oder einfachIsSpecialName()
.Oder Sie könnten gehen mit
IsStandardDirectory()
,IsStandardFilename()
oderIsStandardName()
. Dies folgt der Unix-Namenskonvention (Standardeingabe, Standardausgabe) für Dinge, die für Sie automatisch festgelegt wurden (in diesem Fall vonmkfs
undmkdir
).IsAutomatic…()
oderIsDefault…()
andererseits sind wahrscheinlich nicht intuitiv genug.quelle
IsMagicDirectory()
habe, ziemlich nah daran, aber ich denke, Ihr Wortlaut ist viel intuitiver und angemessener (vor allem, da er festgelegte Namenskonventionen verwendet). Die Verwendung vonIsSpecialFileName
würde sogar klarstellen, dass die Funktion keinen Pfad, sondern einen einzelnen Dateinamen (oder Verzeichnis-, Link-, usw.) erhält.IsSpecialFile()
also ein schlechter Vorschlag gewesen. Aber das habe ich nicht vorgeschlagen; Schlug ich vorIsSpecialFilename()
. Während die Namensda1
,console
,kmem
,myfifo
undurandom
suggestiv sind, sind sie nicht reserviert und sind nicht von Natur aus besonders. Aber.
und..
sind von Natur aus spezielle Dateinamen .Der einzige Begriff, den ich aus der * nix-Welt kenne, ist
CWD
Current Working Directory. Das wird eigentlich ziemlich oft benutzt. B. nach,/proc/$$/cwd
welches ein Link zu dem Verzeichnis ist, von dem aus Sie den Befehl ausführen.Ich weiß nicht , von jedem Standard - Namen für
..
abgesehen vondot-dot
und als @slhck wies darauf hin , das ist keine gute Wahl.quelle
Posix ist ziemlich zweideutig, wenn es um Eltern-Kind-Verzeichnisbeziehungen geht. Wie andere gesagt haben,
.
/..
ist nicht hilfreich , während sie mit anderen Menschen zu sprechen oder zu kommunizieren.Dateistrukturen können als Baumdatenstruktur betrachtet werden. Hier reichen in der Regel "Eltern" und "Kind" oder "Tochter" aus, um Bedeutung zu vermitteln. Sie werden sehen, dass Datenstruktur-Lehrbücher diese Konvention tragen
Alternativ scheint es, als könnten Bäume als "auf" und "ab" des Baumes bezeichnet werden. Konventionell bedeutet "up" näher am Stammverzeichnis und "down" bezieht sich auf das Kind (die Kinder).
Ich denke, dass entweder
IsCurrentOrUp()
oderIsCurrentOrParent()
kann als gute Praxis für die Benennung von Funktionen argumentiert werden.quelle