Je me demandais quelle est la convention de dénomination des fichiers sous Unix? Je ne suis pas sûr de cela, mais je pense qu'il existe peut-être une convention de dénomination universelle à suivre.
Par exemple, je veux nommer un fichier dit: backup
avec part 2
etrandom
Devrais-je le faire comme ceci:
backup_part2_random
OU
backup-part2-random
OU
backup.part2.random
J'espère que la question est claire. En gros, je veux choisir un format conforme à la philosophie Unix.
Réponses:
.
est utilisé pour séparer une extension de type de fichier, par exemplefoo.txt
.-
ou_
est utilisé pour séparer des mots logiques, par exemplemy-big-file.txt
ou parfoismy_big_file.txt
.-
est préférable, car vous n’avez pas besoin d’appuyer sur la touche Maj (du moins avec un clavier d’ordinateur américain standard), d’autres préfèrent_
car il ressemble plus à un espace.Donc, si je comprends votre exemple,
backup-part2-random
oubackup_part2_random
serait plus proche de la convention Unix normale.CamelCase n'est normalement pas utilisé sur les systèmes Linux / Unix. Regardez les noms de fichiers dans
/bin
et/usr/bin
. CamelCase est l'exception plutôt que la règle sur les systèmes Unix et Linux.(
NetworkManager
C’est le seul exemple auquel je puisse penser qui utilise CamelCase, et il a été écrit par un développeur Mac. Beaucoup se sont plaints de ce choix de nom. Sous Ubuntu, ils ont en fait renommé le scriptnetwork-manager
.)Par exemple,
/usr/bin
sur mon système:et même dans ce cas, aucun des fichiers commençant par une capitale n'utilise CamelCase:
la source
.
peut également être utilisé pour faire pivoter des objets, pas seulement pour spécifier une extension. Par exemplemy.log my.log.1 my.log.2.gz
.ls
résultat de/usr/bin
est une référence. C'est une question sur les conventions. )Bien plus important qu’une convention particulière soit cohérente. Choisissez un style et respectez-le.
la source
Mon point de vue sur les conventions de nom de fichier Unix / Linux:
Les systèmes de fichiers Unix / Linux ne supportent pas de manière inhérente la notion d'extension. Le concept d'une extension de fichier existe complètement quelque chose pris en charge par les services publics tels que
cp
,ls
ou le shell que vous utilisez. Je crois que c'est aussi le cas sur NTFS, mais je peux me tromper.Les exécutables, y compris les scripts shell, n’ont généralement jamais d’extension. Les scripts auront une ligne de hachage (c'est-à-dire
#!/bin/bash
) qui identifie quel programme doit l'interpréter./etc
se terminant entab
est aussi super important, commefstab
,mtab
,inittab
..d
, les noms de répertoire sont ajoutés, en particulier dans/etc
, mais cela n'est pas courant (UPDATE: https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux )rc
est largement utilisé pour les scripts ou les fichiers de configuration, en ajoutant des préfixes (par exemplerc.local
) ou des suffixes (.vimrc
).htm
à la fin des fichiers HTML sous Unix / Linux, utilisez.html
.Makefile
dans les packages source. Ne faites ceci que pour des choses commeREADME
.~
est utilisé pour identifier un fichier de sauvegarde ou un répertoire, par exempleimportant_stuff~
, ou/etc~
. Beaucoup d'obus vont s'étendre d'un seul~
à$HOME
.lib
. L'exception estzlib
et probablement quelques autres.in.
, tel quein.tftpd
.vmlinuz
signifie zippé, mais je n'ai jamais vu d'autre fichier nommé de cette façon.la source
.sh
"extension". Personnellement, je trouve cela un peu agaçant, mais je dois admettre que je peux ne pas savoir pourquoi.sh
..sh
scripts qui (1) ne sont pas conçus pour être exécutés de manière interactive, mais uniquement à partir d'autres scripts / programmes, ou (2) sont conçus pour le sourçage plutôt que pour l'exécution. Pour les premiers, ils doivent être exécutables; pour ce dernier, je laisse le bit exécutable désactivé et n'utilise la ligne shebang que pour documenter le shell pour lequel les fonctions sont écrites.#!/bin/zsh
à- dire en haut), vous savez que vous pouvez créer un autre fichier en toute sécurité avec l'extension .zsh et vous assurer qu'il contient le code zsh légal. Si votre script exécutable est strictement conforme à Bourne Shell (c'est-#!/bin/sh
à- dire tout en haut), vous saurez que la recherche de ce fichier .zsh posera problème.Sous Unix, nom de fichier est simplement une chaîne, contrairement à DOS, où nom de fichier a été composé à partir du nom et de l'extension. Donc, n'importe quel nom de fichier donné est tout à fait acceptable.
Cependant, de nombreux programmes utilisent toujours les suffixes de fichiers commençant par point pour distinguer différents types de fichiers, c.-à-d. Apache Web Server utilise des suffixes pour définir le type MIME correct dans les en-têtes de réponse.
la source
Deux pensées:
Dans la
Naming Variables, Functions, and Files
section des normes de codage GNU, vous trouverez:Bien que l'OMI dise "Vous devriez utiliser
_
parce qu'emacs" semble un peu daté, cela se trouve néanmoins dans le document "normes".Supposons un instant que nous sommes tous d’accord sur le fait que le noyau Linux est le * meilleur * projet de Linux, et que les conventions utilisées ici constituent ce que l’on pourrait qualifier de convention «standard».
grep
source -ing pour le noyau Linux, vous trouverez ce qui suit:Fait intéressant, la source pour git pèse 85% pour les tirets, 3,8% pour les traits de soulignement et 11,1% pour les deux.
Le choix est clair, le débat terminé. ;)
Opinion personnelle: J'utilise des tirets pour des raisons esthétiques et majeures. Si vous travaillez en équipe, votez. Mais pour répéter ce qui a été dit, soyez cohérent .
* ou "be_all and end_all" si vous voulez
la source
Caractères à ne pas utiliser dans les noms de fichiers:
Les délimiteurs de caractères que vous devriez utiliser pour rendre les noms plus faciles à lire:
(Dans certains cas, ":" a une signification spéciale cependant)
la source
/
séparateur de chemin et le terminateur de chaîne \ 0 (ASCII zéro).Pour ajouter à ce que d'autres ont dit, je dirais simplement que, même si les noms de fichiers contiennent des lettres accentuées et de nombreux caractères spéciaux, ils peuvent entraîner des problèmes dans l'un des scénarios suivants:
...
la source
Tenez-vous en aux noms de fichiers alphanumériques. Évitez les espaces ou remplacez les espaces par des traits de soulignement (_). Limitez la ponctuation dans les noms de fichiers aux points (.), Traits de soulignement (_) et traits d'union (-). Les noms de fichiers sont généralement en minuscules, mais j'utilise CamelCase lorsque le nom du fichier contient plusieurs mots.
Utilisez des extensions qui indiquent le type de fichier. Les programmes n'ont pas besoin d'extensions car le bit d'exécution est utilisé pour indiquer des programmes, et les shells savent comment exécuter des programmes de différents types. (.Sh) pour les scripts shell et (.pl) pour les scripts perl sont courants mais pas obligatoires. Les extensions exécutables Windows .bat, .com, .scr et .exe indiquent les exécutables Windows sous Unix.
Choisissez un standard et respectez-le. Mais cela ne cassera pas les choses si vous l'évitez.
Les fichiers cachés (ou avec des points) ont des noms commençant par un point. Celles-ci ne figurent normalement pas dans les listes de répertoires. Utilisez 'ls -a' pour inclure les fichiers de points dans la liste.
la source
Une convention consiste à utiliser "_" pour remplacer les espaces en tant que séparateurs entre les mots. D'autres caractères pourraient être utilisés pour remplacer les espaces, mais il existe des utilisations conventionnelles légèrement plus fortes pour "-" et "." dans les noms de chemins, donc "_" est généralement préféré.
Les espaces sont légaux dans les noms de chemins, mais sont généralement évités, car ils nécessitent de citer le nom de chemin ("foo bar") ou d'échapper à ces espaces (foo \ bar). Un script de shell correctement écrit citera des variables pouvant inclure des espaces, en particulier des noms de chemins, mais ne pas le faire est un oubli habituel. Il faut beaucoup de frappe lors de la saisie d'une commande unique en ligne de commande.
Utiliser "-" pour séparer des groupes de nombres, comme dans les horodatages ou les numéros de série, est une convention couramment utilisée en dehors du contexte des systèmes de fichiers. En utilisant "." séparer les "extensions de fichier" qui indiquent que le type de fichier est très courant, et certains outils importants en dépendent. Par exemple, le système de gestion de packages de Red Hat Enterprise Linux et de ses dérivés, RPM, s'attend à ce que les fichiers de package se terminent par ".rpm". L'archive tar traditionnelle est un fichier tar (".tar") gzippé (".gz") et se termine ainsi par ".tar.gz".
Ainsi, en réunissant ces éléments, vous vous retrouvez souvent avec des noms de fichiers qui ressemblent à "home_backup_2017-07-01.tar.gz".
la source
utiliser
-
ou_
pour nommer des fichiers_
pour des fonctions.
d'extensionsla source
Je suis d’accord avec David Oneill pour dire que vous devriez simplement choisir quelque chose.
Mais c’est bien si les fichiers sont triables dans le même répertoire, alors ne numérotez pas 0 ..10 mais numéro 00 ..10.
Lorsque vous utilisez des dates dans des noms, choisissez un format de date standard tel que ISO8601 .
Et n'ayez pas peur d'utiliser plusieurs caractères pour séparer les parties logiques du nom. Si vous utilisez _ (c'était 3 _), vous pourrez simplifier les expressions rationnelles des noms de fichiers ultérieurement.
Votre exemple pourrait alors ressembler à ceci:
Facile à lire et facile à analyser avec des scripts.
la source
Les mots dans un nom de fichier peuvent être séparés avec
_
ou-
selon la convention Unix.Si vous utilisez
-
, il est plus facile de taper, vous évite d'appuyer sur MAJ. Mais comme cela-
prend si peu de place, il est un peu difficile de lire les séparations de mots par rapport à_
. Utiliser_
pour séparer les mots donne une apparence beaucoup plus nette, car cela_
prend plus de place.Dans les scripts shell et autres programmes informatiques,
_
sont utilisés pour les variables de plusieurs mots, commeMY_ENVIRONMENT_FILE
. Rendre les noms de fichiers utilisent_
aussi bien le maintient constante:MY_ENVIRONMENT_FILE=~/my_environment_file
.En développement Web, il
-
est préférable de nommer les fichiers. Une des raisons est probablement que le soulignement dans les liens Web peut masquer les traits de soulignement et peut rendre la tâche difficile si vous tapez le lien Web à la main.Dans la plupart des éditeurs et des pages Web, il
this_long_word
est possible de sélectionner entièrement un double clic, mais pasthis-long-word
.la source
-
et_
prendre exactement le même espace! :)_
apparence est plus nette, même si cela prend le même espace que-
. J'aurais dû utiliser le mot "apparemment". En ce qui concerne la_
et-
lors de l' utilisation des polices Monospace, la différence peut être mieux expliqué avec cette image analogique: evsc.net/v8/wp/wp-content/uploads/2010/09/...Il existe certainement une norme pour Linux. Si vous examinez les noms de fichiers sur n’importe quel système Linux, ils sont en minuscules avec des tirets: / usr / bin / ssh-keygen. Ceci est spécifié dans l’un des documents Linux Standards Base que je ne trouve pas pour le moment. Il est également spécifié par GNU qui dit d’utiliser des traits de soulignement pour les noms de variables et des tirets pour les noms de fichiers.
la source
Pour ajouter à ce que tout le monde a dit:
1-Même si Linux ne s’intéresse pas beaucoup aux extensions, Windows l’aime, alors assurez-vous que tous les fichiers que vous envisagez de donner à quelqu'un ont l’extension appropriée.
Les chapeaux 2-Camel semblent être les plus faciles à utiliser avec des scripts, sans caractères spéciaux pour se soucier des séquences d'échappement.
la source