La seule chose que vous remarquerez est que les fichiers sous Linux ne contiennent généralement pas de noms. Votre enseignant ou collègue utilise un trait de soulignement au lieu d'espaces dans les noms de fichiers et de répertoires.
Ce n'est pas que vous ne pouvez pas utiliser d'espaces dans les noms de fichiers dans le terminal Linux. C'est juste que cela crée une douleur supplémentaire et c'est pourquoi vous devriez l'éviter autant que possible.
Pourquoi? Permettez-moi de le montrer avec des exemples. Vous connaissez la syntaxe générique des commandes Linux :
command [options] argument1 argument2
Ici, les arguments sont séparés par des espaces. Si vous essayez d'utiliser directement des noms de fichiers avec des espaces, ils seront traités comme des arguments séparés plutôt que comme un seul argument.

Dans la capture d'écran ci-dessus, lorsque j'essaie d'utiliser des cat agatha books
commande, il ne comprend pas que agatha books
est un seul argument. Il traite agatha
et books
sous différents noms de fichiers.
Comment gérez-vous les espaces dans le nom de fichier, alors? Il existe deux manières :
Enveloppez le nom de fichier entier entre guillemets :
"file name withn spaces"
Échappez à chaque espace à l'aide de la barre oblique inverse :
file\ name\ with\ spaces
Je vais le montrer en détail.
La complétion par tabulation fonctionne souvent aussi avec des espaces. Votre terminal peut afficher le nom du fichier avec un espace échappé avec une barre oblique inverse si vous appuyez sur la touche de tabulation pour le nom du fichier.Lire un fichier avec des espaces dans le nom de fichier
Pour utiliser un nom de fichier contenant des espaces, vous pouvez l'entourer de guillemets comme ceci :
cat "file name with spaces"
Vous pouvez également échapper à chaque espace avec une barre oblique inverse, mais c'est plus laborieux et plus déroutant que la méthode précédente :
cat file\ name\ with\ spaces
En gros, vous mettez un \
avant chaque espace dans le nom de fichier.
Vous pouvez également utiliser des guillemets simples au lieu de guillemets doubles.
cat 'file name with spaces'

Créer un fichier avec un espace dans le nom de fichier
Maintenant, vous devez taper un espace dans le terminal pour créer le nom de fichier ici. Utilisez à nouveau une barre oblique inverse ou des guillemets.
Comme dans la section précédente, vous pouvez créer de nouveaux fichiers avec des espaces dans le nom de fichier en utilisant des guillemets :
touch "file name with spaces"
Ou la barre oblique inverse également :
touch file\ name\ with\ spaces

Traitement de l'espace dans le nom du dossier
Vous pouvez créer un répertoire avec un espace dans son nom de la même manière que vous créez un fichier.
mkdir "new dir"
Maintenant, si vous voulez basculer vers ce répertoire, vous aurez un chemin avec des espaces.
Mais cela ne devrait plus être un problème pour vous. Pour cd dans un répertoire avec un espace, utilisez à nouveau les guillemets ou la barre oblique inverse.
cd "new dir"
cd new\ dir
Fondamentalement, chaque fois que vous devez gérer des espaces dans les noms, vous utilisez des guillemets ou des barres obliques inverses.
Supposons que vous deviez copier un fichier my file
à partir de ce new dir
. Voici ce que vous pouvez faire :
cp new\ dir/my\ file

Maintenant, ça commence à devenir un peu déroutant, non ? Il y a des barres obliques inverses et des barres obliques. Cela pourrait intimider un nouvel utilisateur ou même un utilisateur chevronné s'il y a beaucoup trop de ces barres obliques.
Cela devient encore plus compliqué lorsqu'il y a des barres obliques inverses dans le nom de fichier. Ensuite, vous verrez des doubles dosserets.
C'est la raison pour laquelle vous devriez essayer d'éviter d'utiliser des espaces ou d'autres caractères spéciaux dans les noms de fichiers. Pour séparer les mots d'un nom de fichier, utilisez le trait de soulignement.
touch a_very_long_file_name_with_too_many_words
Cela rend les noms de fichiers plus faciles à lire et vous n'aurez pas à faire l'effort supplémentaire de gérer ces espaces dans les noms de fichiers.