Имена файлов с пробелом, отображаемым как «имя файла» после обновления до 18.04

23

После обновления до 18.04, с 16.04, все имена файлов с пробелами отображаются как 'file name'. Раньше это было просто file name. Имена файлов без пробелов отображаются нормально:

$ ls
 bar  'foo bar'

Хотя это никак не влияет на функциональность, я считаю это визуально загроможденным.

Я использую в bashкачестве оболочки.

Как я могу удалить ''показ вокруг имен файлов с пробелами?

vidarlo
источник
4
Почему вы хотите удалить их, они не являются частью имени файла и могут помочь вам управлять именами файлов с пробелами в командной строке или в сценариях.
Сорен А
2
Я знаю, что они не являются частью имени файла. Но они - визуальный беспорядок, и я не нуждаюсь в них.
Видарло
4
@SorenA Если вы используете lsдля управления файлами в ваших скриптах, вы делаете это неправильно. Почему вы не должны анализировать выходные данныеls и Почему бы не анализировать ls(и что делать вместо этого)?
десерт
2
@ WinEunuuchs2Unix Это облегчает вставку, но, как упоминается в вашем ответе, оно не меняет поведение, когда не выводится на терминал ...
vidarlo
2
@vidarlo lsАвтор, по крайней мере, решает некоторые проблемы. Зная, что автор активно участвует в Stack Exchange (ссылка в моем ответе), можно было бы легче предположить будущие улучшения. Тогда комментарии от других пользователей побуждают автора к реализации предложений.
WinEunuuchs2Unix

Ответы:

33

Это lsизменение поведения было с 2016 года, но, наконец, оно попало в Ubuntu.

Чтобы вернуть старое поведение, используйте ls -N.

При желании вы можете использовать переменную среды:

QUOTING_STYLE=literal ls

Сделать это псевдоним или набор export QUOTING_STYLE=literalв вашем ~/.bashrcдостигнуть старого поведения.

Вы можете прочитать ссылку выше для более подробной информации, включая историю того, когда, где, почему и как все это произошло. Под автором изменений ls довольно много комментариев, в которых он обосновывает новое поведение:

Несколько моментов об изменении.

  • Он был представлен в coreutils v8.25, а выравнивание улучшено в v8.26
  • Это происходит только при выводе на терминалы, поэтому не нарушает скрипты
  • Он устраняет неоднозначность вывода для пользователей для файлов, содержащих пробелы
  • Он дезинфицирует вывод, поэтому его можно копировать и вставлять.
  • Вывод теперь всегда действителен для копирования и вставки обратно в оболочку
  • Пользователи могут вернуться к старому формату, добавив -Nк своему lsпсевдониму
WinEunuuchs2Unix
источник
12

Это lsчто цитирует вывод, запустите:

ls -N

чтобы получить вывод без цитирования.

man ls

-N, --literal

печатать названия записей без кавычек


Псевдоним это если хочешь

echo "alias ls='ls -N'" >> .bashrc
Ravexina
источник