Les gens disent que vous ne devriez pas utiliser d'espaces dans la dénomination des fichiers Unix. Y a-t-il de bonnes raisons de ne pas utiliser de majuscules dans les noms de fichiers (c.-à-d. File_Name.txt
Vs file_name.txt
)? Ou est-ce simplement une question de préférence personnelle?
28
Réponses:
Les gens disent beaucoup de choses. Il existe certains outils qui peuvent bousiller, mais j'espère qu'ils sont peu nombreux à ce stade, car les espaces sont un virus proliféré par des sociétés de systèmes d'exploitation propriétaires géantes et désormais impossible à éviter.
Les espaces rendent difficile la spécification des noms de fichiers sur la ligne de commande, etc. C'est à peu près ça. Les seuls caractères catégoriquement interdits sur les systèmes * nix sont NUL (ne vous inquiétez pas, ce n'est pas sur votre clavier, ni sur ceux de quelqu'un d'autre) et
/
, puisque c'est le séparateur de chemin. 1 À part ça, tout est permis. Les éléments de chemin d'accès individuels (noms de fichiers) sont limités à 255 octets (une complication possible si vous utilisez des jeux de caractères étendus) et des chemins complets à 4 Ko.Je dirais que oui. Dans votre plus DE semblent créer de un grand nombre de répertoires capitalisés
$HOME
(Downloads
,Desktop
,Documents
- leD
est très populaire), donc il n'y a rien de bizarre à ce sujet. Il existe également des fichiers traditionnels très courants contenant des majuscules, tels que.Xclients
et.Xauthority
.Une valeur de capitaliser les choses au début est que lorsqu'elles sont répertoriées lexicographiquement, elles passeront avant les choses minuscules - au moins, avec de nombreux outils, et soumises aux paramètres régionaux.
Je suis un fan de camel case (aka. CamelCase) et je l'utilise avec des noms de fichiers, par exemple, peu
/home/goldilocks/blueSuedeShoes
importe ce qu'il y a dedans. Certainement une question de préférence personnelle, mais cela ne m'a pas encore causé de chagrin.Les fichiers de classe Java ont tendance à contenir des majuscules par nature, car les noms de classe Java le font. Et bien sûr, n'oublions pas
NetworkManager
, même si certains d'entre nous préfèrent.1. Il y a un jeu de caractères beaucoup plus délimité, recommandé par POSIX "Portable Filename Character Set" qui n'inclut pas l'espace - mais il inclut les majuscules! POSIX spécifie également la restriction plus générale concernant "le caractère barre oblique et l'octet nul" ailleurs dans le même document . Cela reflète ou se reflète dans les pratiques conventionnelles de longue date .
la source
README
s etMakefile
s et ainsi de suite.Une raison d'éviter les majuscules dans les noms de fichiers est que l'ordre de tri dans Unix est sensible à la casse, donc les fichiers commençant par une majuscule apparaîtront dans le désordre. C'est la raison pour laquelle
Makefile
est généralement nommé en utilisant une majusculeM
- c'est l'un des fichiers que vous souhaitez voir en premier, sans faire défiler / sauter vers le basa-l
.Cela dit, vous pouvez faire bien pire en termes de noms de fichiers:
-
peut provoquer des problèmes car de nombreux programmes le verront comme une option de ligne de commande au lieu d'un nom de fichier (par exemplerm -r
, ne supprimera pas un fichier nommé-r
)..
le masquera à de nombreux utilitaires et à la globalisation du shell (par exemplerm *
, ne supprimera pas les fichiers comme.config
)|<>*?
et même de caractères non imprimables commenewline
est techniquement possible, mais peut casser des scripts / programmes similaires au caractère espace. La différence est que le caractère espace est souvent utilisé, donc les programmeurs ont tendance à tester leurs programmes par rapport à lui, tandis que les caractères moins populaires restent souvent non testés.la source
rm *
ne supprimera pas les fichiers comme.config
?Makefile
et enREADME
est un parfait exemple. Notez également que cet effet est négligeable si la lettre n'est pas la première lettre du nom, donc ce n'est pas grave si vous utilisez camelCase. Bien sûr, vous pourriez être surpris de voiranOctagon
avantangle
, mais au moins, ils seraient ensemble dans la liste.Si vous allez vous interfacer avec un environnement Windows, vous devez éviter les majuscules car Windows mettra tout en minuscules. C'est plus souvent un problème qui va dans l'autre sens; un lien vers
Page_2.html
sera trouvépage_2.html
dans Windows, mais échouera sous Unix.la source
NUL
et/
interdits.cat > Foo
le fichier sera écraséfoo
. Ce comportement est susceptible d'être inattendu et déroutant si vous êtes habitué à la préservation de cas et les systèmes de fichiers sensibles à la casse tels que poste *.\0
et/
, respectant la casse). C'est du moins ainsi que je m'en souviens. Mais je suis d'accord que c'est un peu le bordel. Il y a d'autres restrictions dans le…Une raison pour éviter les majuscules est que la
bash
complétion de tabulation est sensible à la casse (au moins par défaut) - cela me fait toujours trébucher à chaque fois que je me retrouve devant unebash
configuration par défaut. Bien sûr, il existe d'autres shells populaires, mais cela combiné au fait qu'ilbash
s'agit du shell de connexion par défaut sur de nombreux systèmes d'exploitation signifie que la valeur par défaut est souvent sensible à la casse. L'utilisation de noms de fichiers en minuscules simplifie plutôt les choses ici.la source
echo set completion-ignore-case On >> ~/.inputrc
peut aider un peu, au moins sur votre propre système.Foo
et de type ultérieurcat f
(Tab), il échouera. Mais la même chose se produit si vous tapezcat foo
,cat Foobar
oucat Fu
- le fait que vous aurez du mal à accéder à un fichier dont vous ne vous souvenez pas correctement n'a vraiment rien à voir avec la saisie semi-automatique.Depuis que NL_Derek a ouvert cette boîte de vers, mais ne l'a pas articulée correctement, je dirai ceci:
Vous pouvez utiliser des majuscules, mais vous devez éviter de créer des fichiers (dans le même répertoire) qui ne diffèrent que par la casse , par exemple,
File_Name.txt
etfile_name.txt
, carFILENA~1.TXT
etFILENA~2.TXT
- typedir /x
pour voir quel nom court (le cas échéant) va avec quel nom long.)cmd1 > foo
cmd2 > Foo
cmd2
la source
Outre des raisons techniques, j'ai un aspect pratique à cela. Respecter les lettres minuscules garantira que les recherches seront plus faciles à moins que l'on aime trop utiliser grep -i ou localiser -i. Parfois, même camelCase peut être déroutant si l'on doit utiliser une chaîne de mots similaires comme dans storageNYCDCPrimary. Donc, je trouve préférable de s'en tenir aux minuscules et de les poivrer avec des traits de soulignement ou des tirets pour la lisibilité, comme storage_nyc_dc_primary.
la source
storageNycDcPrimary
etStorageNycDcPrimary
sont tous deux étranges à lire.Je considère qu'il est préférable d' éviter d'utiliser des majuscules et des espaces dans les noms de fichiers.
Certains diront qu'ils ne sont pas d'accord mais c'est une question ou ce que j'appelle des croyances religieuses : difficile de discuter et de s'entendre. Ceux qui ne sont pas d'accord disent que la plupart des outils sont désormais fixés pour être adaptés aux capitales et aux espaces: ils ont raison, mais ce n'est pas la question.
La bonne question est de savoir de combien avez-vous besoin pour utiliser les majuscules et les espaces dans les noms de fichiers. À cette question, sauf lorsque je programme en Java, la réponse est la plupart du temps: je n'ai pas besoin de majuscules et d'espaces dans mes noms de fichiers . Tous les espaces que je remplace par un trait de soulignement (
_
) ou un signe moins (-
), et pour cette raison, je n'utilise pas d'étui à chameau (aka. CamelCase) contrairement à certaines autres religions.Beaucoup de gens m'ont appelé des conneries pour avoir fait et enseigné que - certains le font toujours - certains ont trébuché sur un outil qui n'était pas favorable aux capitaux / à l'espace et sont venus me dire que j'avais raison et qu'ils auraient dû m'écouter. Faites ce que vous voulez , et si vous utilisez des majuscules et des espaces dans le nom de fichier, j'espère que vous ne trébucherez jamais sur un outil mal écrit. Cependant, si vous voyagez avec un tel outil, je l'espère, ce ne sera pas difficile à réparer et cela ne coûtera pas à votre entreprise et / ou à vous beaucoup d'argent et / ou de temps. Mais si cela finit par avoir de mauvaises répercussions, vous vous souviendrez que certains vous ont dit dans le passé que l'utilisation de majuscules et d'espaces dans les noms de fichiers était une mauvaise pratique.
Et une dernière chose, si vous voulez éviter tous les problèmes , pas de caractères spéciaux dans les noms de fichiers (uniquement les lettres minuscules, les chiffres, le soulignement et les inconvénients [1]). Cette liste de caractères indésirables comprend également tous les caractères non ascii (oui, français et autres non anglais - et je suis l'un d'eux - aucun d'entre eux: à, â, ä, ç, é, ..., ö, æ, œ , ...). Cela s'étend également à de nombreuses autres choses, y compris le login et le mot de passe . Je vous laisse deviner ce qui se passe lorsque vous mettez un devis ou un guillemet double (
'
ou"
) dans un identifiant ou un mot de passe géré par un script bash non écrit par un administrateur système confirmé ....[1]: peut - être que nous pourrions étendre cela à
~
,@
,#
et quelques autres, mais cela est à la recherche des ennuis (et oui je sais sur les fichiers emacs ...).la source