Comment gérer les espaces dans les noms de fichiers sur Linux

Dec 14, 2024
Linux

Comme la plupart des systèmes d'exploitation, Linux prend en charge les noms de fichiers avec des espaces. Mais l'utilisation de ces noms de fichiers sur la ligne de commande n'est pas toujours simple. Voici plusieurs façons de gérer les noms de fichiers contenant des espaces.

L'humble nom de fichier
Pourquoi les espaces dans les noms de fichiers Linux sont douloureux
Comment citer et échapper aux espaces
Comment résoudre le problème de l'espace à sa source
L'expansion d'onglet facilite la gestion des espaces
Comment utiliser des noms de fichiers avec des espaces dans des scripts bash
Espacé, mais pas feuilleté

L'humble nom de fichier

Tout stocké sur votre ordinateur disque dur doit avoir un nom. Sans nom, aucun fichier n'existerait. Toutes les applications et démons qui sont lancés lorsque votre ordinateur est enraciné, et tous les logiciels que vous utilisez, doivent être identifiés et stockés dans un système de fichiers. Cette identification est le nom du fichier. »

La même chose s'applique aux fichiers que vous créez ou installez. Tous vos documents, images et musique ont besoin de noms de fichiers. Sans noms de fichiers, aucun de vos actifs numériques ne pourrait exister. Parce que les noms de fichiers sont si importants, Linux s'efforce d'imposer aussi peu de règles sur leur composition que possible.

Sur Linux, un nom de fichier peut contenir n'importe quel personnage en dehors de la barre oblique " / / »Et le caractère nul, 0x00 . Le caractère nul est utilisé pour marquer la fin d'une chaîne, il ne peut donc pas être présent dans la chaîne elle-même, ou Linux tronquerait le nom de fichier à la position du caractère nul. Le " / / «Forward Slash est utilisé comme séparateur dans les chemins de répertoire.

Les noms de fichiers sont sensibles à la casse, et peut mesurer jusqu'à 255 octets de long , y compris le caractère nul. Les chemins de répertoire peuvent mesurer jusqu'à 4096 octets de long, y compris le caractère nul. Notez que c'est leur longueur octets , qui pourrait ne pas compamer directement à personnages . Les caractères Unicode 16 bits, par exemple, prennent deux octets chacun.

Les amateurs de rétro-ordinateur et ceux qui ont de longs souvenirs sauront qu'au début des ordinateurs personnels, Système d'exploitation disque de Microsoft , DOS, était insensible à la casse et avait une limite de nom de fichier de huit caractères, plus un trois caractères extension .

Vous deviez être très réfléchi et parfois créatif lorsque vous avez nommé des fichiers. En comparaison, la liberté que nous avons aujourd'hui signifie que nous pouvons nommer ce que nous voulons, avec peu de réflexion sur autre chose que la description que nous créons pour ce fichier.

Mais avec des noms de fichiers, ce qui nous fait le plus souvent n'est pas les personnages que nous tapons, ce sont les espaces entre eux.

Pourquoi les espaces dans les noms de fichiers Linux sont douloureux

Des coquilles telles que Bash interpréteront une chaîne de mots séparée par l'espace comme arguments de commande individuels, pas un seul argument. Voici un exemple, en utilisant touche pour Créer un nouveau fichier appelé «Mon nouveau fichier.txt».

Comme on peut le voir, LS nous montre qu'il y a trois fichiers créés, l'un appelé «mon», un autre appelé «new», et un de plus appelé «file.txt».

Noter que touche Je ne nous plaignait pas ni ne mettait d'erreur. Cela réalise ce qu'il pense que nous lui demandons de faire. Il nous renvoie donc silencieusement à la ligne de commande. Si nous ne sommes pas motivés à vérifier, nous ne saurons pas que les choses ne se sont pas déroulées comme prévu.

Pour créer le fichier que nous voulions, nous devons citer ou nous échapper.

Comment citer et échapper aux espaces

Si nous citons l'intégralité du nom de fichier, touche sait qu'il doit traiter le texte cité comme un seul argument.

Cette fois, nous obtenons le fichier unique que nous attendons.

Nous pouvons obtenir le même résultat si nous utilisons le personnage de barre arrière " \ «Pour échapper aux espaces. En «échappant» aux espaces qu'ils ne sont pas traités comme des caractères spéciaux - c'est-à-dire des séparateurs d'arguments - ils sont considérés comme des espaces simples.

Cela fonctionne, mais l'échappement des espaces rend les noms de fichiers de frappe plus lents et les sujets aux erreurs. Les choses peuvent devenir vraiment laides si vous avez également des noms de répertoires avec des espaces.

Cette commande copie un seul fichier texte à partir d'un répertoire appelé «Dir One» à un répertoire appelé «Dir Two», et enregistre la copie en tant que fichier BAK. Et c'est un exemple assez simple.

Comment résoudre le problème de l'espace à sa source

S'ils sont vos propres fichiers, vous pouvez prendre la décision politique pour ne jamais utiliser d'espaces et créer (ou renommée en vrac ) des noms de fichiers comme celui-ci.

Certes, c'est une solution robuste, mais c'est toujours laid. Il existe de meilleures options, comme l'utilisation de tirets " - "Ou souligne" _ «Pour séparer vos mots.

Les deux contourneront le problème, et ils sont lisibles. Si vous ne voulez pas ajouter de caractères supplémentaires à vos noms de fichiers, vous pouvez utiliser Affaire de chameau Pour rendre vos noms de fichiers lisibles, comme ceci:

L'expansion d'onglet facilite la gestion des espaces

Bien sûr, adopter une convention de dénomination et vous y tenir ne vous aidera que lorsque vous avez affaire à vos propres fichiers. Il est peu probable que les fichiers qui viennent de n'importe où ailleurs suivent votre convention de dénomination adoptée.

Vous pouvez utiliser l'expansion des onglets pour vous aider à «remplir» avec précision les noms de fichiers pour nous. Disons que nous voulons supprimer le fichier bak que nous avons créé dans «dir deux», en utilisant RM .

Nous commençons par taper "RM Dir" parce que nous utilisons le RM Commande et nous savons que le nom du répertoire commence par «dir».

Appuyer sur la touche «Tab» fait scanner Bash pour les correspondances dans le répertoire actuel.

Il y a deux répertoires qui commencent par «dir», et dans les deux cas, le personnage suivant est un espace. Alors Bash ajoute le personnage de barre arrière " \ »Et un espace. Bash attend alors que nous fournissons le personnage suivant. Il a besoin du personnage suivant pour différencier les deux correspondances possibles de ce répertoire.

Nous allons taper un «T», pour «deux», puis appuyer sur «Tab» une fois de plus.

Bash complète le nom du répertoire pour nous et attend que nous saisissions le début du nom de fichier.

Nous n'avons qu'un seul fichier dans ce répertoire, donc taper la première lettre du nom de fichier, «M», suffit pour faire savoir à Bash quel fichier nous voulons utiliser. La saisie «M» et l'appui «Tab» complètent le nom de fichier pour nous, et «Entrée» exécute la commande entière.

L'expansion des onglets permet de vous assurer que vous obtenez des noms de fichiers corrects, et il accélère également la navigation et la saisie sur la ligne de commande en général.

EN RAPPORT: Utilisez l'achèvement de l'onglet pour taper les commandes plus rapidement sur n'importe quel système d'exploitation

Comment utiliser des noms de fichiers avec des espaces dans des scripts bash

Ce n'est pas une surprise que scripts Ayez exactement les mêmes problèmes avec les espaces dans les noms de fichiers que la ligne de commande. Si vous passez un nom de fichier en tant que variable, assurez-vous de citer le nom de la variable.

Ce petit script vérifie le répertoire actuel des fichiers qui correspondent au modèle de fichier «* .txt» et les stocke dans une variable appelée file_list . UN pour boucle est utilisé pour effectuer une action simple sur chacun.

Copiez ce texte dans un éditeur et enregistrez-le dans un fichier appelé «files.sh». Puis utiliser le chod commande pour le rendre exécutable.

Nous avons des fichiers dans ce répertoire. L'un a un nom de fichier simple, et les deux autres utilisent des soulignements " _ "Ou des tirets" - «Au lieu d'espaces. C'est ce que nous voyons lorsque nous exécutons le script.

Cela semble bien fonctionner. Mais modifions les fichiers dans le répertoire des fichiers contenant des espaces dans leur nom.

Chaque mot de chaque nom de fichier est géré comme s'il s'agissait d'un nom de fichier seul, et donc le script échoue. Mais tout ce que nous devons faire pour faire de la manche des espaces du script dans les noms de fichiers est de citer le $ fichier variable à l'intérieur du pour boucle.

Notez que le signe du dollar « $ «Est à l'intérieur des citations. Nous avons apporté ce changement et l'avons enregistré dans le fichier de script «files.sh». Cette fois, les noms de fichiers sont traités correctement.

EN RAPPORT: Comment traiter un fichier ligne par ligne dans un script Linux bash

Espacé, mais pas feuilleté

Éviter les espaces de vos propres noms de fichiers ne vous mènera que jusqu'à présent. Il est inévitable que vous rencontrerez des fichiers provenant d'autres sources avec des noms contenant des espaces. Heureusement, si vous avez besoin de gérer ces fichiers sur la ligne de commande ou dans les scripts, il existe des moyens faciles de le faire.


Linux - Most Popular Articles

Comment les utilisateurs force pour changer leurs mots de passe sur Linux

Linux Nov 4, 2024

Ilya Titchev / Shutterstock [dix] Les mots de passe sont la clé de Keystone pour obtenir la sécurité du compte. Nous vous montrerons comment réinitialise..


Comment faire pour utiliser les mots de passe dans les scripts Encrypted Bash

Linux Jun 30, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com [dix] Si vous êtes obligé d'utiliser un script Linux pour vous connecter à une ressource protégée par mot de..


5 Distributions Spécialisées Linux avec des fonctionnalités uniques

Linux Jul 20, 2025

La lecture de la longue liste cartoonishly des distros Linux existantes, les saveurs diverses et les pousses off-de pousses hors tout recommencer à brouiller ensemble. Pour remédier à c..


Quoi de neuf dans le système d'exploitation élémentaire 6 "ODIN"

Linux Aug 14, 2025

Elementary, Inc. [dix] Il y a beaucoup de distributions Linux (Distribution) que les gens prétendent sont de bons remplacements pour Windows ou MacOS. Mais il y..


Les meilleurs ordinateurs portables Linux de 2021 pour les développeurs et les passionnés

Linux Sep 27, 2025

tomeqs / shutterstock.com [dix] Que rechercher dans un ordinateur portable Linux en 2021 Vous pouvez acheter presque n'importe quel ordinate..


Qu'est-ce que POP! _Os?

Linux Oct 20, 2025

Si vous avez entendu parler de Pop! _Os , vous avez peut-être vu des gens qui y parlent souvent comme la meilleure alternative Windows ou la distribution de Linux idéale pou..


Comment ajouter un utilisateur au fichier sudoers dans Linux

Linux Oct 30, 2025

Si un Sudo La commande sur Linux vous donne un message selon lequel un utilisateur «n'est pas dans le fichier sudoers», vous devrez obtenir la liste des «sudoers». Nous allons pa..


Comment répertorier les services Linux avec SystemCTL

Linux Oct 18, 2025

Votre ordinateur Linux repose sur de nombreuses tâches d'arrière-plan appelées services ou démons. Sur les distributions basées sur Systemd, vous avez des commandes intégrées qui vous pe..


Catégories