unix - rutas - ¿Debería una variable de ruta de directorio finalizar con una barra inclinada?
ruta relativa (10)
Al definir una ruta a un directorio como variable o constante, ¿debería terminar con una barra inclinada? ¿Cuál es la convención?
pwd
en Unix muestra tu directorio actual sin una barra al final, mientras que la pestaña completa de cd /var/www/apps/
incluye la barra al final, lo que me dejó inseguro.
Cada vez que almaceno las rutas del directorio, o las devuelvo de las API, trato de mantener la convención de mantener una barra al final. Esto evita toda la ambigüedad ''¿es un archivo o un directorio''?
Adición :
Esto no pretende ser un sustituto del uso de métodos que puedan tolerar una barra inclinada o su ausencia. Incluso usando esta convención, siempre utilizo Path.Combine(...)
y métodos similares.
En php, dado que la función dirname (__ FILE __) devuelve el nombre del directorio sin una barra al final. Tiendo a apegarme a esa convención.
De lo contrario, usar una barra al final de un nombre de directorio entrará en conflicto con la forma en que funciona dirname (..) y luego se verá obligado a manejar los dos casos ya que no sabe si el nombre del directorio proviene de un nombre de directorio (... ) función o un contant definido con una barra inclinada.
Conclusión: no use una barra inclinada ya que dirname (..) no lo hace.
// PHP Example
dirname(__FILE__); // returns c:/my/directory without a trailing slash, so stick to it!
Para otros idiomas, verifique la función que extrae un nombre de ruta, y vea si está usando una barra inclinada o no, y luego cumpla con la convención del idioma.
No incluyo la barra inclinada cuando, por ejemplo, defino un directorio para almacenar archivos. Eso es porque lo usaré como
$store_file = "$store_path/$file_id";
Siempre agregaré una barra inclinada antes de usar una variable que se supone que contiene una ruta de directorio. Creo que es mejor siempre agregar uno que preguntarse si se incluye la barra final.
Nunca he visto una convención firme de ninguna manera.
Sin embargo, estoy bastante seguro de que, sea lo que sea que se decida, alguien más estará 100% seguro de que debería ser al revés. Entonces, la mejor idea es tolerar que las cosas se establezcan de cualquier manera.
En el mundo de .NET, Path.Combine () le ofrece una forma de manejar esto: hay equivalentes en otros entornos, desde archivos cmd activos.
Sé que este es un hilo viejo, pero pensé que compartiría lo que hago. Si es posible, normalmente permitiría ambos y haría algo como esto (si fuera PHP):
$fullPath = rtrim($directory, ''/'') . ''/filename.txt'');
De esta forma, si el directorio está definido en un archivo de configuración, no importa si la siguiente persona para cambiarlo incluye la barra final o no.
Sí, debería, como:
Pathname + filename = ubicación de archivo totalmente calificada.
ASÍ QUE la barra inclinada entre el último directorio y el nombre del archivo debe estar al final de la ruta o al comienzo del nombre del archivo. Al prefijar nombres de archivo con a / significa que debe tener esto en cuenta si solo desea abrir un archivo (es decir, si supone que un nombre de archivo no calificado se encuentra en el directorio de trabajo actual).
Sí, hay muchos sistemas de archivos que admiten archivos sin ninguna extensión, por lo que siempre agregue la barra diagonal para evitar cualquier problema.
Tal vez deberías pensar en lo que significaría tu decisión para los archivos. Si no incluye la barra al final del nombre de un directorio , deberá agregarla al inicio del nombre del archivo .
Ahora, si por alguna razón falta la ruta que conduce al archivo cuando concatena cadenas, termina con algo como /filename
que no es solo un archivo sino una ruta absoluta desde el directorio raíz (donde sea que esté en ese contexto) )
Es por eso que termino mis caminos con una barra y mantengo los archivos como archivos.
Tiendo a solo agregar la barra al final, ya que es más que probable que vaya a usar ese directorio para agregar / recuperar archivos ...
En términos de referencia web, en realidad puede aumentar el rendimiento dejando la barra final en
Voy con la barra al final porque:
"Si termina con una barra inclinada, es un directorio. De lo contrario, es un archivo". es una convención fácil de recordar.
Al menos en los sistemas operativos que uso habitualmente, doblar la barra no causa problemas, mientras que omitir la barra hace que sean grandes. Por lo tanto, es más seguro colocar la barra en la variable y usar "$ ruta / $ archivo" al hacer uso de ella.