Nazwy plików ze spacją wyświetlaną jako „nazwa pliku” po aktualizacji do 18.04


23

Po aktualizacji do 18.04, od 16.04, wszystkie nazwy plików ze spacjami są oznaczone jako 'file name'. Wcześniej było to po prostu file name. Nazwy plików bez spacji są wyświetlane normalnie:

$ ls
 bar  'foo bar'

Chociaż nie wpływa to w żaden sposób na funkcjonalność, wydaje mi się, że jest to zagracenie.

Używam bashjako powłoki.

Jak mogę usunąć ''pokazywanie nazw plików ze spacjami?


4
Dlaczego chcesz je usunąć, nie są one częścią nazwy pliku i mogą pomóc w zarządzaniu nazwami plików ze spacjami w wierszu poleceń lub w skryptach.
Soren A

2
Wiem, że nie są częścią nazwy pliku. Ale są wizualnie zagracone i nie potrzebuję ich.
vidarlo

4
@ SorenA Jeśli używasz lsdo zarządzania plikami w swoich skryptach, robisz to źle. Dlaczego nie powinieneś analizować danych wyjściowychls i Dlaczego nie parsować ls(i co zamiast tego zrobić)?
deser

2
@ WinEunuuchs2Unix Ułatwia wklejanie, ale jak wspomina twoja odpowiedź, nie zmienia zachowania, gdy nie jest
wysyłane

2
@vidarlo lsAutor przynajmniej rozwiązuje niektóre problemy. Wiedząc, że autor jest aktywnie zaangażowany w Stack Exchange (link w mojej odpowiedzi), łatwiej byłoby zasugerować przyszłe ulepszenia. Następnie komentarze innych użytkowników zachęciłyby autora do wdrożenia sugestii.
WinEunuuchs2Unix

Odpowiedzi:


33

Ta lszmiana zachowania nastąpiła od 2016 roku, ale w końcu przechodzi na Ubuntu.

Aby odzyskać stare zachowanie, użyj ls -N.

Opcjonalnie możesz użyć zmiennej środowiskowej:

QUOTING_STYLE=literal ls

Ustaw go jako alias lub ustaw export QUOTING_STYLE=literalw swoim, ~/.bashrcaby osiągnąć stare zachowanie.

Możesz przeczytać powyższy link, aby uzyskać więcej informacji, w tym historię kiedy, gdzie, dlaczego i jak to wszystko się wydarzyło. Istnieje wiele komentarzy pod hasłem autora zmian, w których uzasadnia nowe zachowanie:

Kilka punktów na temat zmiany.

  • Został wprowadzony w Coreutils v8.25, a wyrównanie poprawione w v8.26
  • Dzieje się tak tylko podczas wysyłania do terminali, więc nie psuje skryptów
  • Ujednoznacznia dane wyjściowe dla użytkowników dla plików zawierających białe znaki
  • Odkaża wydruk, dzięki czemu można go bezpiecznie kopiować i wklejać
  • Wyjście jest teraz zawsze poprawne, aby skopiować i wkleić z powrotem do powłoki
  • Użytkownicy mogą wrócić do starego formatu, dodając -Ndo swojego lsaliasu

12

To lscytuje dane wyjściowe, uruchom:

ls -N

aby uzyskać wynik bez cytowania.

man ls

-N, - literał

drukuj nazwy pozycji bez cytowania


Alias, jeśli chcesz:

echo "alias ls='ls -N'" >> .bashrc
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.