Pourquoi y a-t-il un espace supplémentaire lorsque je tape «ls» dans le répertoire Desktop?

27

Par simple curiosité, je me demandais s'il y avait une raison pour l'espace supplémentaire lorsque je tape lsdans le répertoire Desktop. Comparer...

~/Desktop$ ls
 file1 file2 file3

...à...

~/Documents$ ls
file1 file2 file3

Notez que lorsque je tape lssur le bureau, j'obtiens un espace supplémentaire au début de la ligne (ne fait pas partie du nom de fichier). Je ne trouve aucun autre emplacement d'exemple où j'obtiens cet espace supplémentaire au début de la ligne. Est-ce que quelqu'un d'autre a compris cela? Y a-t-il une raison?

NB: J'utilise la version Ubuntu Bionic Beaver LTS et le terminal par défaut qui l'accompagne.

Bart
la source
Je n'ai pas ça. Si je crée un fichier avec juste un espace comme nom ( touch " ") j'ai deux espaces devant.
pLumo
6
Exécutez ls -laplutôt ou find -type f -printf "file: -%P-\n"et fournissez la sortie. Il y a probablement un fichier avec un caractère non imprimable. La coloration des fichiers pourrait également l'affecter, alors essayez \lsou dircommandez
Sergiy Kolodyazhnyy
Je n'ai pu voir aucun fichier avec des caractères non imprimables, lorsque j'ai essayé vos 2 premières suggestions. J'ai encore un espace quand j'essaye \ ls mais pas quand j'utilise dir ...
Bart
35
Présentez votre sortie réelle .
Courses de légèreté avec Monica

Réponses:

85

L'espace supplémentaire apparaît lorsque vous avez des noms de fichiers dans votre répertoire nécessitant 'autour d'eux (par exemple, des noms de fichiers avec des espaces ou d'autres caractères spéciaux).

~/mytmp$ ls
 a           'file(abc)'         proyecto3.csv   test         Test.sh
 b           'file(ab,c?).mp4'   rootfile        Test1.txt    Test.zip
 F26         'file(abc?).mp4'    scr             Test2.test   vowels
 Feb          guess              script          Test2.txt
'Feb 26 xx'   hw                 something       test.rar

Après avoir supprimé les fichiers «étranges» que j'obtiens:

~/mytmp$ ls
a    guess  proyecto3.csv  script     test        Test2.txt   Test.sh
b    hw     rootfile       something  Test1.txt   test.rar    Test.zip
F26  loop   scr            speak      Test2.test  testscript  vowels
muclux
la source
Merci pour l'explication - cela me semble correct. Ce qui m'a jeté, c'est que l'espace supplémentaire au début de la ligne ne doit pas nécessairement se trouver devant le fichier contenant les caractères spéciaux. Mais je suppose que cela est fait pour rendre la présentation plus claire dans le terminal. Merci encore
Bart
53

Je suis sûr que ce file1 file2 file3n'est pas exactement ce qui est affiché sur votre écran. Vous avez omis des informations précieuses (les noms de fichiers réels) qui pourraient facilement être pertinentes.

Mon hypothèse est que vous avez un nom de fichier qui contient un espace ou un autre caractère spécial.

Une version plus récente de coreutils lscite ces noms de fichiers, généralement entre guillemets simples. De plus, s'il y a au moins un fichier nécessitant une telle citation, il ajoute un espace devant tous les autres noms de fichiers afin qu'ils s'alignent "bien" s'ils se trouvent l'un en dessous de l'autre, c'est-à-dire que le guillemet simple (apostrophe) est ignoré pour l'alignement.

Voir --quoting-styleet -Ndans la page de manuel de lspour plus de détails, et la section "Formatage des noms de fichiers" dans sa page d' informations pour encore plus de détails. Vous pourriez par exemple envisager d' aliasing lsà ls -N.

egmont
la source