На самом деле я не нахожусь в реальной Ubuntu. Я нахожусь в человечности на окнах 10. Если я нахожусь в реальной человечности. Я могу использовать эту команду
ls >list.txt
получить текстовый файл. И каждая строка просто содержит один объект (никакой избыточный пробел)
Но если я нахожусь в диске окон
cd /mnt/d/VirtualNes/
ls >list.txt
Затем я получаю файл простого текста в одной строке
Таким образом, как получить файл, каждая строка которого содержат один объект без пустого пробела?
было две вещи,
https://stackoverflow.com/questions/6521685/why-does-windows-use-cr-lf
Здесь является более длительным объяснением истории и некоторых деталей о кодах LF и CR: http://penguinpetes.com/b2evo/index.php?title=argh_microsoft_notepad_crlf_argh
Windows использует коды CR/LF в конце каждой строки, в то время как Ubuntu (Linux в целом) использует просто код LF.
при открытии текстового файла, сгенерированного Ubuntu, реальным, виртуальным, или Windows Subsystem для Linux (WSL), файл будет выглядеть хорошо. При открытии того же файла в Windows все строки вместе.
Первый, проверьте, что текстовый файл создал WSL, на самом деле имеют имена файлов в отдельных строках:
cd /mnt/d/VirtualNes/
ls >list.txt
cat list.txt
последняя строка отображает содержание list.txt в терминале Ubuntu. Необходимо видеть, что файл выглядит хорошо.
Ubuntu идет с на терминальном основанным нано текстового редактора. Можно использовать его для редактирования текстового файла вместо Блокнота:
nano list.txt
, С другой стороны, при открытии того же файла в Windows с помощью notepad.exe, например, Вы будете видеть смешанные строки. Вы получите те же результаты, если Вы создадите подобный файл в "реальной" Ubuntu, и открытый находится в Windows.
, Если Вы хотите открыть текстовые файлы, созданные в Ubuntu в Windows, необходимо будет преобразовать код LF в конце каждой строки к коду CR/LF. Можно сделать это в подсказке Windows CMD (не терминал Ubuntu) путем ввода:
TYPE list.txt | MORE /P > win_list.txt
Вы получите новый файл win_list.txt
, который откроется правильно в Windows.
существуют другие способы сделать это, такой как unix2dos
и dos2unix
утилиты. В Ubuntu можно установить оба этих 2 утилиты следующей командой:
sudo apt install dos2unix
См. https://stackoverflow.com/questions/17579553/windows-command-to-convert-unix-line-endings и https://stackoverflow.com/questions/3891076/how-to-convert-windows-end-of-line-in-unix-end-of-line-cr-lf-to-lf для больше.
Hope это помогает
Это - побочный эффект использования notepad.exe. Блокнот является очень простым редактором двоичного файла, и он основан на приложении блокнота MS-DOS. Это требует CR/LF для новых строк, вместо просто LF, как Linux и приложения Linux (и таким образом, Windows Subsystem для Linux/Bash на Ubuntu в Windows). Таким образом, это покажет все на одной строке, так как это никогда не видит CR/LF.
Другие приложения считают его правильно. Wordpad.exe считает вывод ls, как Вы ожидаете. Как будет Word. Или IE. Или Chrome. Или любое современное программное обеспечение разработано в прошлое десятилетие.
Можно работать вокруг этого на notepad.exe путем передачи по каналу его к преобразователю.
unix2dos разработан, чтобы сделать это. Или используйте другие команды, как sed. Пример:
ls | sed -e 's/\r*$/\r/' > list.txt
Добавит CR к LF в конце, и notpad покажет файл правильно.