Por que há um espaço extra quando digito "ls" no diretório Desktop?

27

Por curiosidade, eu queria saber se há uma razão para o espaço extra quando digito lsno diretório Desktop. Comparar...

~/Desktop$ ls
 file1 file2 file3

...para...

~/Documents$ ls
file1 file2 file3

Observe que, quando digito lsna área de trabalho, recebo um espaço extra no início da linha (não faz parte do nome do arquivo). Não consigo encontrar outro local de exemplo onde recebo esse espaço extra no início da linha. Alguém conseguiu isso? Existe uma razão?

NB: Estou usando a versão Ubuntu Bionic Beaver LTS e o terminal padrão fornecido com ela.

Bart
fonte
Eu não tenho isso. Se eu criar um arquivo com apenas um espaço como o nome ( touch " "), tenho dois espaços à frente.
pLumo 7/03
6
Em ls -lavez disso, execute ou find -type f -printf "file: -%P-\n"e forneça a saída. Provavelmente, há um arquivo com caracteres não imprimíveis. A coloração dos arquivos também pode potencialmente afetá-lo, então tente \lsou dircomando
Sergiy Kolodyazhnyy
Não consegui ver nenhum arquivo com caracteres não imprimíveis quando tentei suas duas primeiras sugestões. Eu ainda tenho um espaço quando eu tento, mas não quando eu uso dir ...
Bart
35
Apresente sua saída real .
Lightness Races com Monica em

Respostas:

85

O espaço extra aparece quando você precisa de nomes de arquivos em seu diretório '(por exemplo, nomes de arquivos com espaços ou outros caracteres especiais).

~/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

Depois de remover os arquivos 'estranhos', recebo:

~/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
fonte
Obrigado pela explicação - isso me parece correto. O que me impressionou é que o espaço extra no início da linha não precisa necessariamente estar na frente do arquivo que possui os caracteres especiais. Mas acho que isso é feito para tornar a apresentação mais clara no terminal. Mais uma vez obrigado
Bart
53

Tenho certeza de file1 file2 file3que não é exatamente o que é mostrado na tela. Você omitiu informações preciosas (os nomes dos arquivos reais) que podem ser facilmente relevantes.

Suponho que você tenha um nome de arquivo que contenha um espaço ou outro caractere especial.

Versão mais recente do coreutils lscita esses nomes de arquivo, geralmente entre aspas simples. Além disso, se houver pelo menos um arquivo exigindo essa citação, ele adicionará um espaço na frente de todos os outros nomes de arquivos para que eles se alinhem "muito bem" se estiverem embaixo um do outro, ou seja, a aspas simples (apóstrofo) será ignorado para alinhamento.

Veja --quoting-stylee -Nna página de manual de lspara mais detalhes, e a seção "Formatando os nomes de arquivo" em sua página de informações para mais detalhes. Você pode, por exemplo, considerar um alias lspara ls -N.

Egmont
fonte