Obtuve una función que verifica si el nombre del archivo pasado es .
o ..
. Pero no sé cómo nombrarlo correctamente. Algo así IsCurrentOrParentDirectory()
es ambiguo, ya que la función toma un nombre de archivo y no una ruta completa. (Intuitivamente, un compañero programador esperaría que pasara /usr/
mientras estoy dentro /usr/
regresaría true
, mientras que este no es el caso).
¿Existe un término técnico para estas entradas de directorio? Si hay uno, ¿cuál es?
path
technical-writing
Max Truxa
fuente
fuente
.
y..
son nombres de archivos de acuerdo con el estándar POSIX. Vea mi cita a continuación. Yo diría que está bien aquí, ya que se trata de conceptos informáticos generales.foo.bar
,foo
, ...) pero no una ruta de acceso (foo/bar
,/foo/
, ...). Pero como los directorios, enlaces, etc. también son archivos, lo dejaré así.Respuestas:
Del estándar POSIX :
Entonces, realmente, si desea verificar si el nombre de archivo es
.
o..
tendría que llamarloIsDotOrDotDot()
, o, utilizando la terminología POSIX de resolución de nombre de rutaIsPredecessorOrParentOfPredecessor()
, o tal vez inclusoPointsToPredecessorOrParentOfPrecedessor()
... se le ocurre la idea. El problema es que la última terminología solo tiene sentido cuando se miran nombres de ruta completos. Pero nadie lo entendería de todos modos.Teniendo en cuenta eso
.
y..
son nombres de archivo válidos (solo interpretados de manera diferente), solo debe atenerse a lo que tiene, confiando en el significado en lugar de en cómo se llaman internamente.fuente
.bash_history
punto o no punto? No estoy seguro de si el nombre de esa función es más descriptivo que el OP propuesto..
o no..
, y no si acababa de comenzar con a.
. Por supuesto, el nombre de la función del OP es más descriptivo; Solo le estaba señalando cómo se conoce técnicamente.IsDotOrDotDot()
dice nada sobre lo que está haciendo la función.IsDotOrDotDot
. Cualquiera que conozca los conceptos del sistema de archivos lo comprenderá al instante. Es discutible si.bash_history
es "punto" porque no se proporciona contexto para el significado de "punto", pero definitivamente NO es "punto o punto punto"..
y..
generalmente se usan para describir rutas relativas frente a las absolutas como/usr
. Usaría esta diferencia y declararía la función comoIsRelativeCurrentOrParentDirectory()
.Tenga en cuenta que las referencias de puntos pueden aparecer en cualquier parte de la ruta. ¿Qué hay de
/usr/local/..
?fuente
El estándar POSIX, que slhck ♦ citado útilmente, dice:
(énfasis añadido). Entonces, aunque no es exactamente técnico , parece que "nombre de archivo especial" podría ser el nombre oficial . Sus usuarios probablemente entenderlo si se llama a su función de cualquiera de los siguientes:
IsSpecialDirectory()
,IsSpecialFilename()
o simplementeIsSpecialName()
.O usted podría ir con
IsStandardDirectory()
,IsStandardFilename()
oIsStandardName()
. Esto sigue la convención de nomenclatura de Unix (entrada estándar, salida estándar) para las cosas que se establecen automáticamente para usted (en este caso, pormkfs
ymkdir
).IsAutomatic…()
oIsDefault…()
, por otro lado, probablemente no son lo suficientemente intuitivos.fuente
IsMagicDirectory()
muy cercano a eso, pero creo que su redacción es mucho más intuitiva y apropiada (especialmente porque usa convenciones de nomenclatura establecidas). El usoIsSpecialFileName
incluso dejaría en claro que la función no recibe una ruta sino un solo nombre de archivo (o directorio, enlace, etc.).IsSpecialFile()
habría sido una mala sugerencia. Pero no sugerí eso; SugeríIsSpecialFilename()
. Mientras que los nombressda1
,console
,kmem
,myfifo
yurandom
son sugestivos, que no están reservados y no son intrínsecamente especial. Pero.
y..
son nombres de archivo inherentemente especiales .El único término que conozco del mundo * nix es
CWD
para el Directorio de trabajo actual. Eso en realidad se usa con bastante frecuencia. Vea, por ejemplo,/proc/$$/cwd
cuál es un enlace al directorio desde el que ejecuta el comando.No conozco ningún nombre estándar
..
apartedot-dot
y como señaló @slhck, esa no es una buena opción.fuente
Posix es bastante ambiguo al hablar sobre las relaciones de directorio padre-hijo. Como otros han dicho,
.
/..
no es útil al hablar o comunicarse con otros humanos.Las estructuras de archivos pueden considerarse como una estructura de datos de árbol. Aquí, generalmente "padre" e "hijo" o "hija" son suficientes para transmitir el significado. Verá que los libros de texto de estructura de datos llevan esta convención
Alternativamente, parece que se puede hablar de árboles como "arriba" y "abajo" del árbol. Por convención, "arriba" significa más cerca del directorio raíz, y "abajo" se refiere a los hijos.
Creo que
IsCurrentOrUp()
oIsCurrentOrParent()
se puede argumentar que es una buena práctica para nombrar funciones.fuente