Dateinamen mit Leerzeichen werden nach dem Upgrade auf 18.04 als 'Dateiname' angezeigt

23

Nach einem Upgrade von 16.04 auf 18.04 werden alle Dateinamen mit Leerzeichen als angezeigt 'file name'. Bisher war es einfach file name. Dateinamen ohne Leerzeichen werden normalerweise angezeigt:

$ ls
 bar  'foo bar'

Obwohl es die Funktionalität in keiner Weise beeinträchtigt, finde ich dies visuell unübersichtlich.

Ich benutze bashals Shell.

Wie kann ich ''das Anzeigen von Dateinamen mit Leerzeichen entfernen ?

vidarlo
quelle
4
Warum möchten Sie sie entfernen? Sie sind nicht Teil des Dateinamens und können Ihnen bei der Verwaltung von Dateinamen mit Leerzeichen in der Befehlszeile oder in Skripten helfen.
Soren A
2
Mir ist bewusst, dass sie nicht Teil des Dateinamens sind. Aber sie sind visuelle Unordnung, und ich brauche sie nicht.
Vidarlo
4
@SorenA Wenn Sie lsDateien in Ihren Skripten verwalten, machen Sie es falsch. Warum sollten Sie die Ausgabe von lsnicht analysieren und warum nichtls (und was tun stattdessen)?
Dessert
2
@ WinEunuuchs2Unix Es macht das Einfügen einfacher, aber wie in Ihrer Antwort erwähnt, ändert es kein Verhalten, wenn es nicht auf dem Terminal
ausgegeben wird
2
@vidarlo Der lsAutor spricht zumindest einige der Probleme an. Wenn man weiß, dass der Autor aktiv an Stack Exchange beteiligt ist (der Link in meiner Antwort), könnte man leichter zukünftige Verbesserungen vorschlagen. Dann würden Kommentare von anderen Nutzern den Autor ermutigen, Vorschläge umzusetzen.
WinEunuuchs2Unix

Antworten:

33

Diese lsVerhaltensänderung war ab 2016, macht aber endlich den Weg in Ubuntu frei.

Verwenden Sie, um das alte Verhalten wiederherzustellen ls -N.

Optional können Sie eine Umgebungsvariable verwenden:

QUOTING_STYLE=literal ls

Machen Sie es zu einem Alias ​​oder legen export QUOTING_STYLE=literalSie es fest ~/.bashrc, um das alte Verhalten zu erreichen.

Sie können den obigen Link lesen, um weitere Details zu erfahren, einschließlich der Geschichte, wann, wo, warum und wie dies alles zustande kam. Es gibt einige Kommentare unter dem Autor der Änderungen, in denen er das neue Verhalten rechtfertigt:

Ein paar Punkte zur Veränderung.

  • Es wurde in Coreutils 8.25 eingeführt und die Ausrichtung in 8.26 verbessert
  • Dies geschieht nur bei der Ausgabe auf Terminals, ohne dass Skripte beschädigt werden
  • Die Ausgabe für Benutzer für Dateien, die Leerzeichen enthalten, wird eindeutig
  • Die Ausgabe wird bereinigt, sodass das Kopieren und Einfügen sicher ist
  • Die Ausgabe ist jetzt immer zum Kopieren und Einfügen in die Shell gültig
  • Benutzer können durch Hinzufügen -Neines lsAlias zum alten Format zurückkehren
WinEunuuchs2Unix
quelle
12

Es ist das ls, was die Ausgabe zitiert:

ls -N

um die Ausgabe ohne Anführungszeichen zu erhalten.

man ls

-N, --literal

Eintragsnamen ohne Anführungszeichen drucken


Alias ​​es, wenn Sie wollen:

echo "alias ls='ls -N'" >> .bashrc
Ravexina
quelle