Dlaczego po wpisaniu „ls” w katalogu Desktop pojawia się dodatkowe miejsce?

27

Właśnie z ciekawości zastanawiałem się, czy jest jakiś powód do dodatkowego miejsca, kiedy piszę lsw katalogu Desktop. Porównać...

~/Desktop$ ls
 file1 file2 file3

...do...

~/Documents$ ls
file1 file2 file3

Zauważ, że kiedy piszę lsna pulpicie, dostaję dodatkowe miejsce na początku wiersza (nie jest to część nazwy pliku). Nie mogę znaleźć innej przykładowej lokalizacji, w której dostanę tę dodatkową przestrzeń na początku wiersza. Czy ktoś to dostaje? Czy jest powód?

Uwaga: używam wersji Ubuntu Bionic Beaver LTS i domyślnego terminala, który jest z nią dostarczany.

Bart
źródło
Nie mam tego Jeśli utworzę plik ze spacją jako nazwą ( touch " "), mam dwie spacje z przodu.
pLumo
6
ls -laZamiast tego uruchom lub find -type f -printf "file: -%P-\n"i podaj dane wyjściowe. Prawdopodobnie jest plik o charakterze niedrukowalnym. Kolorowanie plików również może potencjalnie wpłynąć na to, więc spróbuj \lslub dir
wydaj
Nie mogłem zobaczyć żadnych plików ze znakami, które nie mogą zostać wydrukowane, gdy wypróbowałem 2 pierwsze sugestie. Nadal mam miejsce, gdy próbuję, ale nie, kiedy używam reż ...
Bart
35
Przedstaw swoją rzeczywistą wydajność.
Lekkość ściga się z Monicą

Odpowiedzi:

85

Dodatkowa spacja pojawia się, gdy masz potrzebne nazwy plików w katalogu '(np. Nazwy plików ze spacjami lub inne znaki specjalne).

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

Po usunięciu „dziwnych” plików otrzymuję:

~/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
śluz
źródło
Dziękuję za wyjaśnienie - dla mnie to brzmi poprawnie. Rzuciło mnie to, że dodatkowa spacja na początku wiersza niekoniecznie musi znajdować się przed plikiem zawierającym znaki specjalne. Ale myślę, że zrobiono to, aby prezentacja była bardziej przejrzysta w terminalu. Jeszcze raz dziękuję
Bart
53

Jestem pewien, że file1 file2 file3nie jest to dokładnie to, co pokazano na ekranie. Pominąłeś cenne informacje (rzeczywiste nazwy plików), które mogą z łatwością być istotne.

Zakładam, że masz nazwę pliku, która zawiera spację lub inny znak specjalny.

Nowsza wersja coreutils lscytuje takie nazwy plików, zwykle w pojedynczych cudzysłowach. Ponadto, jeśli istnieje co najmniej jeden plik wymagający takiego cytowania, dodaje spację przed wszystkimi innymi nazwami plików, dzięki czemu wyrównują się „ładnie”, jeśli znajdują się pod sobą, to znaczy pojedynczy cudzysłów (apostrof) zignorowano dla wyrównania.

Zobacz --quoting-stylei -Nna stronie podręcznika,ls aby uzyskać więcej szczegółowych informacji, oraz sekcję „Formatowanie nazw plików” na stronie informacyjnej, aby uzyskać jeszcze więcej szczegółów. Możesz np. Rozważyć aliasing lsdo ls -N.

egmont
źródło