¿Por qué hay un espacio adicional cuando escribo "ls" en el directorio del escritorio?

27

Solo por curiosidad, me preguntaba si hay una razón para el espacio extra cuando escribo lsen el directorio de Escritorio. Comparar...

~/Desktop$ ls
 file1 file2 file3

...a...

~/Documents$ ls
file1 file2 file3

Tenga en cuenta que cuando escribo lsen el escritorio obtengo un espacio adicional al comienzo de la línea (no es parte del nombre del archivo). No puedo encontrar ninguna otra ubicación de ejemplo donde obtenga este espacio adicional al comienzo de la línea. ¿Alguien más entiende esto? ¿Hay una razón?

NB: Estoy usando la versión Ubuntu Bionic Beaver LTS y el terminal predeterminado que viene con él.

Bart
fuente
No tengo esto Si creo un archivo con solo un espacio como nombre ( touch " ") tengo dos espacios al frente.
pLumo
66
Ejecute en su ls -lalugar o find -type f -printf "file: -%P-\n"y proporcione la salida. Probablemente hay un archivo con caracteres no imprimibles. Coloración de archivos también potencialmente podría afectar a ella, a fin de tratar \lso dircomando
Sergiy Kolodyazhnyy
No pude ver ningún archivo con caracteres no imprimibles, cuando probé sus primeras 2 sugerencias. Todavía tengo un espacio cuando intento \ ls pero no cuando uso dir ...
Bart
35
Presente su salida real .
Lightness compite con Monica el

Respuestas:

85

El espacio adicional aparece cuando tiene nombres de archivos en su directorio que los necesitan '(por ejemplo, nombres de archivos con espacios u otros caracteres especiales).

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

Después de eliminar los archivos 'extraños' obtengo:

~/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
fuente
Gracias por la explicación, esto me parece correcto. Lo que me sorprendió es que el espacio extra al comienzo de la línea no necesariamente tiene que estar delante del archivo que tiene los caracteres especiales. Pero supongo que esto se hace para que la presentación sea más clara en el terminal. Gracias de nuevo
Bart
53

Estoy bastante seguro de file1 file2 file3que no es lo que se muestra exactamente en su pantalla. Omitió información valiosa (los nombres de archivo reales) que fácilmente podrían ser relevantes.

Supongo que tiene un nombre de archivo que contiene un espacio u otro carácter especial.

La versión más nueva de coreutils lscita dichos nombres de archivo, generalmente entre comillas simples. Además, si hay al menos un archivo que requiere ese tipo de comillas, agrega un espacio delante de todos los demás nombres de archivos para que se alineen "bien" si están uno debajo del otro, es decir, la comilla simple (apóstrofe) es ignorado para la alineación.

Consulte --quoting-styley -Nen la página del manual de lspara obtener más detalles, y la sección "Formatear los nombres de archivo" en su página de información para obtener aún más detalles. Se podría considerar, por ejemplo aliasing lsa ls -N.

egmont
fuente