Recherche de site Web

Comment créer des fichiers avec des caractères spéciaux sous Linux


Nous rencontrons très régulièrement des noms de fichiers et de dossiers. Dans la plupart des cas, le nom du fichier/dossier est lié au contenu du fichier/dossier et commence par un numéro et des caractères.

Les noms de fichiers alphanumériques sont assez courants et très largement utilisés, mais ce n’est pas le cas lorsque nous devons traiter des noms de fichiers/dossiers contenant des caractères spéciaux.

Remarque : Nous pouvons avoir des fichiers de n’importe quel type, mais pour des raisons de simplicité et de facilité d’implémentation, nous traiterons des fichiers texte (.txt), tout au long de l’article.

Noms de fichiers les plus courants sous Linux

Voici quelques exemples de noms de fichiers les plus courants :

abc.txt
avi.txt
debian.txt
...

Voici quelques exemples de noms de fichiers numériques :

121.txt
3221.txt
674659.txt
...

Voici quelques exemples de noms de fichiers alphanumériques :

eg84235.txt
3kf43nl2.txt
2323ddw.txt
...

Exemples de noms de fichiers qui ont un caractère spécial et qui ne sont pas très courants :

#232.txt
#bkf.txt
#bjsd3469.txt
#121nkfd.txt
-2232.txt
-fbjdew.txt
-gi32kj.txt
--321.txt
--bk34.txt
...

L’une des questions les plus évidentes ici est la suivante : qui diable crée/traite les fichiers/dossiers ayant un hachage (#), un point-virgule (;), un tiret (-) ou tout autre caractère spécial.

Je suis d’accord avec vous, que de tels noms de fichiers ne sont pas courants, mais votre shell ne devrait pas se briser/abandonner lorsque vous devez faire face à de tels noms de fichiers. De plus, techniquement, tout ce qu’il s’agit d’un dossier, d’un pilote ou de quoi que ce soit d’autre est traité comme un fichier sous Linux.

Nom de fichier en tirets sous Linux

Sous Linux, les noms de fichiers qui commencent par un tiret (« -« ) sont souvent appelés « noms de fichiers avec tirets » ou « noms de fichiers avec trait d’union ». Ces noms de fichiers peuvent parfois causer des problèmes lors de leur utilisation, car le tiret de début peut être mal interprété comme une option ou signalé par des utilitaires de ligne de commande.

Créer un fichier en pointillés sous Linux

Pour utiliser des noms de fichiers en tirets sous Linux, créez d’abord un fichier qui commence par un tiret (-), par exemple -abx.txt à l’aide de la commande tactile.

$ touch -abc.txt

Exemple de sortie :

touch: invalid option -- 'b'
Try 'touch --help' for more information.

La raison de l’erreur ci-dessus est que le shell interprète tout ce qui suit un tiret (-), comme une option, et évidemment, il n’y a pas une telle option, d’où l’erreur.

Pour résoudre une telle erreur, nous devons dire au shell bash de ne rien interpréter après le caractère spécial (ici le tiret), en option.

Il y a deux façons de résoudre cette erreur comme suit :

$ touch -- -abc.txt		[Option #1]
touch ./-abc.txt		[Option #2]

Vous pouvez vérifier le fichier ainsi créé par les deux méthodes ci-dessus en exécutant les commandes ls ou ls -l pour une longue liste.

$ ls -l

total 0
.rw-rw-r-- tecmint tecmint   0 B  Tue Jun 20 10:32:43 2023 -abc.txt

Modifier un fichier en pointillés sous Linux

Pour modifier un fichier avec un nom de fichier en pointillés, vous pouvez utiliser les différents éditeurs de texte disponibles. Voici un exemple d’utilisation de l’éditeur de texte nano :

$ nano -- -abc.txt 
or 
nano ./-abc.txt 

Vous pouvez remplacer nano par n’importe quel autre éditeur de votre choix, par exemple, utilisez l’éditeur vim comme indiqué :

$ vim -- -abc.txt 
or 
vim ./-abc.txt 

Renommer un fichier en tirets sous Linux

Pour renommer un fichier avec un nom de fichier en pointillés, vous pouvez utiliser la commande mv comme indiqué.

Par exemple, pour renommer un fichier nommé « -abc.txt » en « -a.txt », vous devez utiliser :

$ mv -- -abc.txt -a.txt
OR
mv ./-abc.txt ./-a.txt

Supprimer le fichier en pointillés sous Linux

Pour supprimer un fichier dont le nom de fichier est marqué par des tirets, vous pouvez utiliser la commande rm comme indiqué.

$ rm -- -abc.txt
OR
rm ./-abc.txt 

Si vous avez beaucoup de fichiers dans un dossier dont le nom contient un tiret et que vous souhaitez tous les supprimer en même temps, procédez comme suit :

$ rm ./-*

La même règle que celle décrite ci-dessus s’applique à n’importe quel nombre de traits d’union dans le nom du fichier et leur occurrence. C’est-à-dire, -a-b-c.txt, ab-c.txt, abc-.txt, etc.

La même règle que celle décrite ci-dessus s’applique au nom du dossier ayant n’importe quel nombre de traits d’union et à leur occurrence, sauf le fait que pour supprimer le dossier, vous devez utiliser 'rm -rf' comme suit :

$ rm -rf -- -abc
or
rm -rf ./-abc

Nom de fichier haché sous Linux

Sous Linux, le caractère « # » n’est pas restreint ou réservé à un usage spécifique dans les noms de fichiers. Vous pouvez utiliser le caractère « # » comme n’importe quel autre caractère alphanumérique dans un nom de fichier.

Cependant, il convient de mentionner que certains caractères spéciaux, y compris le « # », ont des significations spéciales dans certains contextes ou lorsqu’ils sont utilisés avec des commandes ou des utilitaires spécifiques.

Par exemple, le caractère « # » est couramment utilisé dans les scripts shell pour indiquer les commentaires. Si vous écrivez un script shell et que vous souhaitez inclure le caractère « # » dans un nom de fichier, il est conseillé d’échapper ou de guillemets correctement le nom de fichier pour éviter toute interprétation involontaire comme un commentaire.

Création d’un fichier de hachage sous Linux

Voici un exemple de création d’un fichier avec le caractère « # » dans son nom de fichier :

$ touch #abc.txt

Exemple de sortie :

touch: missing file operand
Try 'touch --help' for more information.

La raison de l’erreur ci-dessus est que bash interprète #abc.txt comme un commentaire et l’ignore donc. Ainsi, la commande tactile a été passée sans aucun opérande de fichier et c’est donc l’erreur.

Pour résoudre une telle erreur, vous pouvez demander à bash de ne pas interpréter # comme un commentaire.

$ touch ./#abc.txt
or
touch '#abc.txt'

et vérifiez que le fichier qui vient d’être créé est le suivant :

$ ls -l

.rw-rw-r-- tecmint tecmint 0 B Tue Jun 20 11:11:00 2023 #abc.txt

Créez maintenant un fichier dont le nom contient # n’importe où sauf au début.

$ touch ./a#bc.txt
touch ./abc#.txt

or
touch 'a#bc.txt'
touch 'abc#.txt'

Que se passe-t-il lorsque vous créez deux fichiers (disons a et #bc) à la fois :

$ touch a.txt #bc.txt

De toute évidence, dans l’exemple ci-dessus, il n’a créé que le fichier 'a' et le fichier '#bc' a été ignoré. Pour exécuter la situation ci-dessus avec succès, nous pouvons faire,

$ touch a.txt ./#bc.txt
or
touch a.txt '#bc.txt'

Enfin, vérifiez le fichier qui vient d’être créé à l’aide de la commande ls.

$ ls -l

Renommer ou copier un fichier de hachage sous Linux

Pour renommer un fichier de hachage, vous pouvez utiliser la commande mv comme indiqué.

$ mv ./#bc.txt ./#cd.txt
or
mv '#bc.txt' '#cd.txt'

Pour copier un fichier de hachage, vous pouvez utiliser la commande cp comme indiqué.

$ cp ./#cd.txt ./#de.txt
or
cp '#cd.txt' '#de.txt'

Modifier ou supprimer un fichier de hachage sous Linux

Pour modifier un fichier de hachage, vous pouvez utiliser l’éditeur nano ou vim comme indiqué.

$ vi ./#cd.txt
or
vi '#cd.txt'
$ nano ./#cd.txt
or
nano '#cd.txt'

Pour supprimer un fichier de hachage, vous pouvez utiliser la commande rm comme indiqué.

$ rm ./#bc.txt 
or
rm '#bc.txt'

Pour supprimer tous les fichiers dont le nom contient le hachage (#), vous pouvez utiliser :

$ rm ./#*

Nom de fichier point-virgule sous Linux

Au cas où vous ne le sauriez pas, le point-virgule agit comme un séparateur de commande dans BASH et peut-être aussi un autre shell. Le point-virgule vous permet d’exécuter plusieurs commandes en une seule fois et agit comme un séparateur. Avez-vous déjà eu affaire à un nom de fichier contenant un point-virgule ? Si ce n’est pas ici, vous le ferez.

Créez un fichier contenant un point-virgule.

$ touch ;abc.txt

Exemple de sortie :

touch: missing file operand
Try 'touch --help' for more information.
bash: abc.txt: command not found

La raison de l’erreur ci-dessus est que lorsque vous exécutez la commande ci-dessus, BASH interprète touch comme une commande mais n’a pas pu trouver d’opérande de fichier avant le point-virgule et signale donc une erreur.

Il signale également une autre erreur selon laquelle la commande 'abc.txt' n’a pas été trouvée, uniquement parce qu’après le point-virgule, BASH attendait une autre commande, et 'abc.txt', n’est pas une commande.

Pour résoudre une telle erreur, dites à BASH de ne pas interpréter le point-virgule comme un séparateur de commande, comme suit :

$ touch ./';abc.txt'
or
touch ';abc.txt'

Remarque : Nous avons placé le nom du fichier entre guillemets simples ''. Il indique à BASH que ; fait partie du nom de fichier et non d’un séparateur de commande.

Le reste de l’action (à savoir, copier, déplacer, supprimer) sur le fichier et le dossier ayant un point-virgule dans son nom peut être effectué directement en entourant le nom d’un guillemet simple.

Caractères spéciaux dans les noms de fichiers sous Linux

Sous Linux, les noms de fichiers peuvent contenir la plupart des caractères spéciaux, y compris des espaces, des points, des tirets, des traits de soulignement et même des symboles tels que @, !, $ et %.

Voici une liste de caractères spéciaux que vous devez utiliser avec prudence ou envisager d’échapper lorsque vous les utilisez dans des noms de fichiers :

Signe plus (+) dans le nom de fichier

Pour créer un fichier de signe plus (+) sous Linux, vous pouvez utiliser la commande tactile avec le nom de fichier entre guillemets simples.


touch '+ravi.txt' 

Signe dollar ($) dans le nom de fichier

Pour créer un fichier de signe dollar ($) sous Linux, vous pouvez utiliser la commande touch avec le nom de fichier entre guillemets simples.


touch '$ravi.txt' 

Pourcentage ( %) dans le nom de fichier

Pour créer un fichier de signe de pourcentage ( %) sous Linux, vous pouvez utiliser.


touch '%ravi.txt' 

astérisque (*) dans le nom de fichier

Pour créer un fichier astérisque (*) sous Linux, vous pouvez utiliser.

$ touch '*ravi.txt' 

Remarque : Lorsque vous devez supprimer un fichier commençant par *, n’utilisez jamais les commandes suivantes pour supprimer de tels fichiers.

$ rm *
or
rm -rf *

Au lieu de cela, utilisez,

$ rm ./*.txt

Point d’exclamation ( !) dans le nom de fichier

Il suffit de mettre le nom du fichier entre guillemets simples et le reste des choses est identique.

$ touch '!ravi.txt'

au signe (@) dans le nom de fichier

Rien de plus, traitez un nom de fichier ayant le signe @ comme un fichier normal.

$ touch '@ravi.txt'

Signe d’insertion (^) dans le nom de fichier

Aucune attention supplémentaire n’est requise, utilisez un fichier ayant ^ dans le nom de fichier comme un fichier normal.

$ touch '^ravi.txt'

esperluette (&) dans le nom de fichier

Le nom du fichier doit être entouré de guillemets simples et vous êtes prêt à partir.

$ touch '&ravi.txt'

Parenthèses() dans le nom de fichier

Si le nom de fichier comporte des parenthèses, vous devez le placer entre guillemets simples.

$ touch '(ravi.txt)'

Signe d’accolades ({}) dans le nom de fichier

Aucun soin supplémentaire n’est nécessaire. Traitez-le simplement comme un autre fichier.

$ touch {ravi.txt}

Chevrons (<>) dans le nom de fichier

Un nom de fichier comportant des chevrons doit être entouré de guillemets simples.

$ touch '<ravi.txt>'

Crochets ([]) dans le nom de fichier

Traitez les noms de fichiers ayant des crochets comme des fichiers normaux et vous n’avez pas besoin d’en prendre soin davantage.

$ touch [ravi.txt]

Score inférieur (_) dans le nom de fichier

Ils sont très courants et ne nécessitent rien de plus. Faites simplement ce que vous auriez fait avec une lime normale.

$ touch _ravi.txt

Equal-to (=) dans le nom de fichier

Avoir un signe égal à ne change rien, vous pouvez l’utiliser comme un fichier normal.

$ touch =ravi.txt

barre oblique inverse (\) dans le nom de fichier

La barre oblique inverse indique à l’interpréteur de commandes d’ignorer le caractère suivant. Vous devez mettre le nom du fichier entre guillemets simples, comme nous l’avons fait dans le cas du point-virgule. Le reste des choses est simple.

$ touch '\ravi.txt'

Forward (\) dans le nom de fichier

Vous ne pouvez pas créer un fichier dont le nom inclut une barre oblique (/) tant que votre système de fichiers n’a pas le bogue. Il n’y a aucun moyen d’échapper à une barre oblique.

Donc, si vous pouvez créer un fichier tel que '/ravi.txt' ou 'b/c.txt', alors soit votre système de fichiers a un bogue, soit vous avez le support Unicode, qui vous permet de créer un fichier avec une barre oblique. Dans ce cas, la barre oblique n’est pas une véritable barre oblique mais un caractère Unicode qui ressemble à une barre oblique.

Point d’interrogation ( ?) dans le nom de fichier

Encore une fois, un exemple où vous n’avez pas besoin de faire d’effort particulier. Un nom de fichier ayant un point d’interrogation peut être traité de la manière la plus générale.

$ touch '?ravi.txt'

Point (.) dans le nom de fichier

Les fichiers commençant par un point (.) sont très spéciaux sous Linux et sont appelés dotfiles. Il s’agit de fichiers cachés, généralement des fichiers de configuration ou des fichiers système. Vous devez utiliser l’interrupteur '-a' ou '-A' avec la commande ls pour afficher ces fichiers.

La création, l’édition, le changement de nom et la suppression de ces fichiers sont simples.

$ touch '.ravi.txt'

Remarque : Sous Linux, vous pouvez avoir autant de points (.) que nécessaire dans un nom de fichier. Contrairement à d’autres points système dans le fichier, les noms ne signifient pas séparer les noms et les extensions. Vous pouvez créer un fichier comportant plusieurs points comme suit :

$ touch 1.2.3.4.5.6.7.8.9.10.txt

et vérifiez-le comme suit :

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun  8 14:32 1.2.3.4.5.6.7.8.9.10.txt

Virgule (,) dans le nom de fichier

Vous pouvez avoir une virgule dans un nom de fichier, autant que vous le souhaitez et vous n’avez besoin de rien de plus. Faites-le simplement de la manière normale, comme le nom de fichier simple.

$ touch ',ravi.txt'
or
touch ',ravi,.txt'

Deux points (:) dans le nom de fichier

Vous pouvez avoir un deux-points dans un nom de fichier, autant que vous le souhaitez et vous n’avez besoin de rien de plus. Faites-le simplement de la manière normale, comme le nom de fichier simple.

$ touch :12.txt
or
touch ':ravi:.txt'

Guillemets doubles («  ») dans le nom de fichier

Pour avoir des guillemets dans le nom de fichier, nous devons utiliser la règle d’échange. C’est-à-dire que si vous avez besoin d’avoir un guillemet simple dans le nom de fichier, entourez le nom de fichier de guillemets doubles et si vous avez besoin d’avoir un guillemet double dans le nom de fichier, entourez-le d’un guillemet simple.

$ touch "15'.txt"

and

touch 'ravi”.txt'

tilde (~) dans le nom de fichier

Certains éditeurs sous Linux comme emacs créent un fichier de sauvegarde du fichier en cours d’édition. Le fichier de sauvegarde porte le nom du fichier d’origine plus un tilde à la fin du nom du fichier. Vous pouvez avoir un fichier dont le nom inclut un tilde, à n’importe quel emplacement, simplement comme :

$ touch '~ravi.txt'
or
$touch 'anusha~.txt'

Espace blanc dans le nom de fichier

Créez un fichier dont le nom comporte un espace entre les caractères/mots, dites « salut je m’appelle ravi.txt ».

Ce n’est pas une bonne idée d’avoir des noms de fichiers avec des espaces et si vous devez un nom lisible distinct, vous devez utiliser un trait de soulignement ou un tiret. Cependant, si vous devez créer un tel fichier, vous devez utiliser une barre oblique inverse qui ignore le caractère suivant. Pour créer le fichier ci-dessus, nous devons le faire de cette façon.

$ touch hi\ my\ name\ is\ ravi.txt

hi my name is ravi.txt

J’ai essayé de couvrir tous les scénarios que vous pouvez rencontrer. La plupart des implémentations ci-dessus sont explicitement pour BASH Shell et peuvent ne pas fonctionner dans d’autres shells.

Si vous pensez que j’ai manqué quelque chose (qui est très courant et de nature humaine), vous pouvez inclure votre suggestion dans les commentaires ci-dessous. Restez connecté et continuez à commenter. Restez à l’écoute et connectés ! Aimez-nous et partagez-nous et aidez-nous à nous propager !

Articles connexes: