Lors de la définition d'un chemin d'accès à un répertoire en tant que variable ou constante, doit-il se terminer par une barre oblique finale? Quelle est la convention? Dans unix affiche votre répertoire actuel sans une barre oblique, tandis que l'onglet complet de cd /var/www/apps/
inclut la barre oblique, ce qui m'a laissé incertain.Une variable de chemin de répertoire doit-elle se terminer par une barre oblique finale?
Répondre
Je n'inclue pas la barre oblique de fin lorsque je définis par exemple un répertoire pour stocker des fichiers. C'est parce que je vais l'utiliser comme
$store_file = "$store_path/$file_id";
Je vais toujours ajouter une barre oblique avant d'utiliser une variable qui est censé tenir un chemin de répertoire. Je pense qu'il est préférable de toujours en ajouter un que de se demander si le slash final est inclus.
Chaque fois que je stocke des chemins de répertoire, ou que je les renvoie depuis des API, j'essaie de respecter la convention de garder une barre oblique. Cela évite toute l'ambiguïté "est-ce un fichier ou un répertoire".
Addendum:
Ce ne vise pas à se substituer à l'aide de méthodes qui peuvent tolérer soit un slash ou son absence. Même en utilisant cette convention, je toujours utilise Path.Combine(...)
et des méthodes similaires.
python: 'os.path.join (dir, sous-répertoire_ou_fichier)' – IceArdor
J'ai tendance à simplement ajouter le slash comme je suis plus que probable d'utiliser ce répertoire pour ajouter/récupérer des fichiers ...
En termes de référencement web, il peut effectivement augmenter les performances en laissant le slash dans
Je ne l'ai jamais vu une convention ferme de toute façon. Cependant, vous êtes sûr que, quoi que vous décidiez, quelqu'un d'autre sera sûr à 100% que ce devrait être l'inverse. Donc, la meilleure idée est de tolérer que les choses soient définies de toute façon. Dans le monde .NET, Path.Combine() vous donne un moyen de gérer cela - il y a des équivalents dans d'autres environnements, à partir de fichiers cmd.
Oui il se doit, comme:
+ Pathname filename = emplacement du fichier complet. Ainsi, la barre oblique entre le dernier répertoire et le nom de fichier doit se trouver à la fin du chemin d'accès ou au début du nom de fichier. Préfixer les noms de fichiers avec un/signifie que vous devez en tenir compte si vous voulez juste ouvrir un fichier (c'est-à-dire si vous supposez qu'un nom de fichier non qualifié est dans le répertoire de travail courant).
.. et ne pas le prendre en compte signifie que vous êtes peut-être par inadvertance déconner avec /, et de cette façon la folie se trouve – JustJeff
Oui, il y a beaucoup de systèmes de fichiers qui supportent les fichiers sans extension, donc ajoutez toujours la barre oblique de fin pour éviter tout problème.
je vais avec le slash parce que: «Si elle se termine par une barre oblique, il est un répertoire Sinon, il est un fichier. »
est une convention facile à retenir.
Au moins sur les systèmes d'exploitation que j'utilise couramment, le fait de doubler la barre oblique ne cause aucun problème, tandis que l'omission de la barre oblique entraîne de gros problèmes. Il est donc plus sûr de placer la barre oblique dans la variable et d'utiliser "$ path/$ file" pour l'utiliser.
Un chemin de répertoire est seulement distinguable d'un chemin de fichier si le chemin du répertoire a une barre oblique de fin. – Darwin
Les barres obliques multiples sont équivalentes à une barre oblique, sauf si le chemin commence par une double barre oblique. Voir http://unix.stackexchange.com/questions/1910/how-linux-handles-multiple-path-separators-home-username-file – jdh8
De plus ajouter une barre oblique à la fin de vaariable permet d'utiliser "$ path $ file" à la place de "$ path/$ file", ce qui permet un chemin $ vide - signifiant le répertoire de travail actuel. Mais n'utilisez jamais de barre oblique inverse au lieu de barre oblique. – fantastory
Peut-être que vous devriez penser à ce que votre décision signifierait pour les fichiers. Si vous n'incluez pas la barre oblique à la fin d'un nom , vous devrez l'ajouter au début du fichier . Maintenant, si pour une raison quelconque, le chemin menant au fichier est manquant lorsque vous concaténez des chaînes, vous finissez avec quelque chose comme /filename
qui n'est pas seulement un fichier mais un chemin absolu depuis le répertoire racine (où que ce soit dans ce contexte).
C'est pourquoi je termine mes chemins avec une barre oblique et conserve les fichiers sous forme de fichiers.
Je sais que c'est un vieux fil mais j'ai pensé que je partagerais ce que je fais. Si possible, je normalement permettre à la fois et de faire quelque chose comme ça (si elle était PHP):
$fullPath = rtrim($directory, '/') . '/filename.txt');
De cette façon, si le répertoire est défini dans un fichier de configuration, il n'a pas d'importance si la prochaine personne pour le changer comprend la barre oblique ou non.
En php, puisque la fonction dirname (__ FILE __) renvoie le nom du répertoire sans barre oblique à la fin. J'ai tendance à m'en tenir à cette convention. Sinon, l'utilisation d'une barre oblique à la fin d'un nom de répertoire entrera en conflit avec la façon dont dirname (..) fonctionne, et vous serez bloqué par la gestion des deux cas puisque vous ne savez pas si le nom du répertoire vient d'un dirname (..) fonction ou un contant défini avec un slash final.
Ligne de fond: N'utilisez pas de barre oblique finale car dirname (..) ne l'est pas.
// PHP Example
dirname(__FILE__); // returns c:\my\directory without a trailing slash, so stick to it!
Pour les autres langues, vérifier la fonction qui extrait un nom de chemin, et voir si elle utilise une barre oblique ou non, puis coller à la convention de la langue.
Une exception: dirname ('/ test') = '/' - plutôt que de retourner une chaîne vide, dirname renvoie une barre oblique dans ce cas! Voir les notes [ici] (http://php.net/manual/fr/function.dirname.php). –
- 1. Lors de la création d'une collection via WebDAV si le nom de la collection se terminer par une barre oblique
- 2. Modèle d'URL de servlet correspondant à une URL se terminant par une barre oblique ("/")
- 3. Problème avec une barre oblique dans une chaîne de requête
- 4. Impossible d'ajouter une barre oblique avec .htaccess
- 5. Lucene et barre oblique
- 6. Un corps de requête doit se terminer par une clause select ou une clause de groupe
- 7. PHP - supprimer une barre oblique inverse à partir d'une apostrophe
- 8. ASP.NET - Comment échapper une apostrophe avec une barre oblique à insérer dans une base de données
- 9. Création de Uri à partir de la base sans barre oblique et parties relatives
- 10. .htaccess avec ou sans barre oblique
- 11. Comment ajouter une seule barre oblique inverse à une chaîne dans Ruby?
- 12. Multiplier variable par une autre variable?
- 13. Comment définir une variable sur le chemin du répertoire parent sur les fenêtres?
- 14. Convention de dénomination Variable \ Propriété
- 15. FDT/Eclipse: variable de chemin
- 16. Comment puis-je échapper le caractère barre oblique dans vi?
- 17. Accès à la valeur de variable finale statique Java par réflexion
- 18. org.xml.sax.SAXParseException: La référence de caractère doit se terminer par ';' délimiteur. Solution de contournement requise
- 19. Problèmes de remplacement d'un ID statique par une variable
- 20. Résolution d'un problème de barre oblique à la fin d'une installation donnée
- 21. Javascript Expression régulière pour correspondre à la chaîne à moins que précédée par une barre oblique inverse
- 22. IE8 ignore l'espace de largeur nulle lorsqu'il est précédé d'une barre oblique en mode standard
- 23. Routage ASP.NET MVC: Puis-je avoir un nom d'action avec une barre oblique?
- 24. Comment placer le chemin stocké dans une variable entre guillemets?
- 25. Grails UrlMappings avec motif d'URL se terminant par "/"
- 26. Ajouter une barre de progression dans la barre de navigation
- 27. Chemin absolu du répertoire de démarrage exécutable
- 28. Essayer de se moquer de « nouveau » par une association
- 29. Recherche d'un caractère barre oblique inverse dans vim
- 30. Supprimer la première barre oblique dans un lien?
Ne pas avoir de barre oblique ne signifie pas que le chemin de $ chemin_dossier est un fichier ou un répertoire. "/ tmp/store_data" est-ce un fichier ou un répertoire? – Darwin
Lorsque vous utilisez quelque chose comme la fonction PHP [realpath()] (http://php.net/manual/en/function.realpath.php), il n'imprimera pas la barre oblique finale. Votre système et vos outils peuvent dicter votre convention. – jmbertucci
Avoir de multiples barres obliques partout sera généralement interprété comme une simple barre oblique. Donc, vous pourriez même avoir quelque chose comme '' /// '+ $ root +' // '+ $ fichier +'/''et cela n'aurait pas d'importance. Bien que le slash soit un bon moyen de voir si le chemin est un fichier ou un répertoire, il vaut mieux ajouter des chemins comme ''/' + $ root' plutôt que '$ root +'/'' Vous ne pouvez pas être certain que le chemin d'accès à l'ajout a une barre oblique, mais vous pouvez être relativement certain que les barres multiples seront interprétées comme une seule barre oblique dans la plupart des environnements. – Xtrinity