Como importar um arquivo com o método correto?

1

Na verdade eu não estou em um Ubuntu real. Eu estou em ubuntu no windows 10 .Se eu estou em um ubuntu real.Eu posso usar esse comando

ls >list.txt

para obter um arquivo de texto. E cada linha contém apenas um item (sem espaço em branco redundante)

Mas se eu estiver no disco do Windows

cd /mnt/d/VirtualNes/
ls >list.txt

Então eu recebo um arquivo de texto simples em uma linha

  

Então, como obter um arquivo cuja cada linha contém um item sem branco vazio?

    
por yode 15.08.2017 / 21:16

2 respostas

3

Quando tínhamos máquinas de escrever mecânicas ...

houve duas coisas,

  1. Retorno de carro, que moveu o rolo de volta quando atingiu a margem direita e
  2. Alimentador de linha, que moveu o rolo para cima, para que os cabeçotes do tipo não escreva sobre a linha existente, mas escreva em uma nova linha.

link

Aqui está uma explicação mais detalhada da história e alguns detalhes sobre os códigos CR e LF: link

Ainda hoje ...

O Windows usa códigos CR / LF no final de cada linha, enquanto o Ubuntu (Linux em geral) usa apenas o código LF.

Quando você abre um arquivo de texto gerado pelo Ubuntu, real, virtual ou Windows subsistema para Linux (WSL), o arquivo ficará bem. Quando você abre o mesmo arquivo no Windows, todas as linhas estão juntas.

O que você pode fazer?

Primeiro, verifique se o arquivo de texto criado no WSL tem nomes de arquivos em linhas separadas:

cd /mnt/d/VirtualNes/
ls >list.txt
cat list.txt

A última linha exibe o conteúdo de list.txt no terminal do Ubuntu. Você deve ver o arquivo parece bem.

O Ubuntu vem com um terminal de texto baseado em nano. Você pode usá-lo para editar o arquivo de texto em vez do Bloco de notas:

nano list.txt

Por outro lado, se você abrir o mesmo arquivo no Windows usando o notepad.exe, por exemplo, verá as linhas desordenadas. Você obterá os mesmos resultados se criar um arquivo semelhante no Ubuntu "real" e abrir no Windows.

Se você quiser abrir os arquivos de texto criados no Ubuntu no Windows, você terá que converter o código LF no final de cada linha para o código CR / LF. Você pode fazer isso no prompt do Windows CMD (não no terminal do Ubuntu) digitando:

TYPE list.txt | MORE /P > win_list.txt

Você receberá um novo arquivo win_list.txt que será aberto corretamente no Windows.

Existem outras maneiras de fazer isso, como unix2dos e dos2unix utilitários. No Ubuntu você pode instalar estes dois utilitários com o seguinte comando:

sudo apt install dos2unix

Veja link e link para mais.

Espero que isso ajude

    
por user68186 15.08.2017 / 22:11
0

Este é um efeito colateral do uso de notepad.exe . O Notepad é um editor de arquivos binários muito simples, baseado no aplicativo notepad do ms-dos. Ele requer CR / LF para novas linhas, em vez de apenas LF, como aplicativos linux e linux (e, portanto, o Windows Subsystem para Linux / Bash no Ubuntu no Windows). Então, ele mostrará tudo em uma linha, já que nunca vê CR / LF.

Outras aplicações irão lê-lo corretamente. Wordpad.exe irá ler a saída ls como você espera. Como vai Word. Ou IE. Ou Chrome. Ou qualquer software moderno projetado na última década.

Você pode contornar isso para o notepad.exe colocando-o em um conversor.

O unix2dos foi projetado para isso. Ou use outros comandos, como sed. Exemplo:

ls | sed -e 's/\r*$/\r/' > list.txt

Adicionará o CR ao LF no final, e o notpad mostrará o arquivo corretamente.

    
por cde 02.03.2018 / 17:51