fbpx

Comandos Linux – Comando dos2unix

Comandos Linux dos2unix e unix2dos

comando dos2unix

Nos sistemas operacionais do tipo Unix, os comandos dos2unix e unix2dos convertem arquivos de texto sem formatação do formato DOS ou Mac para o Unix e vice-versa.

Descrição

Nos arquivos de texto do DOS / Windows , uma quebra de linha , também conhecida como nova linha , é uma combinação de dois caracteres: um retorno de carro (CR) seguido por um avanço de linha (LF) . Nos arquivos de texto Unix, uma quebra de linha é um único caractere: o Line Feed (LF). Nos arquivos de texto do Mac, antes do macOS X , uma quebra de linha era um único caractere de retorno de carro (CR). Atualmente, o macOS usa quebras de linha no estilo Unix (LF).

Os arquivos binários são ignorados automaticamente, a menos que a conversão seja forçada.

Arquivos não regulares, como diretórios e FIFOs , são automaticamente ignorados.

Os links simbólicos e seus destinos são mantidos intocados por padrão. Os links simbólicos podem opcionalmente ser substituídos ou a saída pode ser gravada no destino do link simbólico. Links simbólicos no Windows não são suportados. Os links simbólicos do Windows são sempre substituídos, mantendo os destinos inalterados.

O Dos2unix foi modelado após o dos2unix no SunOS / Solaris e possui modos de conversão semelhantes.

Sintaxe

dos2unix [ opções ] [ FILE ...] [-n INFILE  OUTFILE ...]
unix2dos [ opções ] [ FILE ...] [-n INFILE  OUTFILE ...]

Opções

Trate todas as opções a seguir como nomes de arquivo . Use esta opção, por exemplo, se desejar converter arquivos cujos nomes começam com um traço. Portanto, para converter um arquivo chamado ” -foo “, você pode usar este comando:

dos2unix – -foo Ou no novo modo de arquivo:

dos2unix -n – -foo out.txt

-asciiConverta apenas quebras de linha. Este é o modo de conversão padrão.
-isoConversão entre o conjunto de caracteres DOS e ISO -8859-1. Veja também a seção MODOS DE CONVERSÃO.
-1252Use a página de código 1252 do Windows (Europa Ocidental).
-437Use a página de código DOS 437 (EUA). Esta é a página de código padrão usada para a conversão ISO.
-850Use a página de código DOS 850 (Europa Ocidental)
-860Use a página de código 860 do DOS (português).
-863Use a página de código 863 do DOS (francês canadense).
-865Use a página de código 865 do DOS (nórdico).
-7Converta caracteres de 8 bits em espaço de 7 bits.
-c, –convmode CONVMODEDefina o modo de conversão. Onde CONVMODE é um dos: ascii , 7bit , iso ou mac , sendo ascii o padrão.
-f, –forceForçar a conversão de arquivos binários.
-h, –helpExiba ajuda e saia.
-k, –keepdateMantenha o carimbo de data do arquivo de saída igual ao arquivo de entrada.
-L, –licenseExibir licença do programa .
-l, –newlineAdicione nova linha adicional.

dos2unix : Somente quebras de linha do DOS são alteradas para duas quebras de linha do Unix. No modo Mac, apenas as quebras de linha do Mac são alteradas para duas quebras de linha do Unix.

unix2dos : Somente as quebras de linha do Unix são alteradas para duas quebras de linha do DOS. No modo Mac, as quebras de linha do Unix são alteradas para duas quebras de linha do Mac.

-m, –add-bomEscreva uma marca de ordem de UTF -8 bytes no arquivo de saída. Nunca use esta opção quando a codificação de saída for diferente de UTF-8. Veja também a seção UNICODE.
-n, –newfile INFILE OUTFILE …Novo modo de arquivo. Converta o arquivo INFILE e grave a saída no arquivo OUTFILE . Os nomes dos arquivos devem ser dados em pares e os nomes curinga não devem ser usados ​​ou você perderá seus arquivos.

A pessoa que inicia a conversão no modo de novo arquivo (emparelhado) será o proprietário do arquivo convertido. As permissões de leitura / gravação do novo arquivo serão as permissões do arquivo original menos a umask da pessoa que executa a conversão.

-o, –oldfile ARQUIVO …Modo de arquivo antigo. Converta o arquivo FILE e substitua a saída nele. O programa é executado como padrão neste modo. Nomes curinga podem ser usados.

No modo de arquivo antigo (no local), o arquivo convertido obtém as mesmas permissões de proprietário , grupo e leitura / gravação que o arquivo original. Além disso, quando o arquivo é convertido por outro usuário que possui permissões de gravação no arquivo (por exemplo, raiz do usuário ). A conversão será abortada quando não for possível preservar os valores originais. A mudança de proprietário pode significar que o proprietário original não pode mais ler o arquivo. A mudança de grupo pode ser um risco de segurança, o arquivo pode ser tornado legível para pessoas para as quais não se destina. A preservação de permissões de proprietário, grupo e leitura / gravação é suportada apenas no Unix.

-q, –quietModo silencioso. Suprima todos os avisos e mensagens. O valor de retorno é zero. Exceto quando opções erradas de linha de comando são usadas.
-s, –safeIgnorar arquivos binários (padrão).
-F, –follow-symlinkSiga os links simbólicos e converta os destinos.
-R, –replace-symlinkSubstitua os links simbólicos pelos arquivos convertidos (os arquivos de destino originais permanecem inalterados).
-S, –skip-symlinkMantenha links e destinos simbólicos inalterados (padrão).
-V, –versionExibir informações da versão e sair.

Modo Mac

No modo normal, as quebras de linha são convertidas do DOS para o Unix e vice-versa. Quebras de linha do Mac não são convertidas.

No modo Mac, as quebras de linha são convertidas do Mac para o Unix e vice-versa. Quebras de linha do DOS não são alteradas.

Para executar no modo Mac, use a opção de linha de comando ” -c mac ” ou use os comandos ” mac2unix ” ou ” unix2mac “.

Modos de conversão

asciiNo modo “ascii”, apenas as quebras de linha são convertidas. Este é o modo de conversão padrão.

Embora o nome desse modo seja ASCII , que é um padrão de 7 bits , o modo real é 8 bits . Use sempre esse modo ao converter arquivos Unicode UTF-8.

7bitNesse modo, todos os caracteres não ASCII de 8 bits (com valores de 128 a 255) são convertidos em um espaço de 7 bits.
isoOs caracteres são convertidos entre um conjunto de caracteres DOS (página de códigos) e um conjunto de caracteres ISO ISO-8859-1 (Latin-1) no Unix. Os caracteres DOS sem ISO-8859-1 equivalente, para os quais a conversão não é possível, são convertidos em um ponto. O mesmo vale para caracteres ISO-8859-1 sem o equivalente do DOS.

Quando apenas a opção “-iso” é usada, o dos2unix tentará determinar a página de código ativa. Quando isso não for possível, o dos2unix usará a página de código padrão CP437, usada principalmente nos EUA. Para forçar uma página de código específica, use as opções “-437” (EUA), “-850” (Europa Ocidental), “-860” (Português), “-863” (Francês Canadense) ou “-865” (Nórdico) . A página de código do Windows CP1252 (Europa Ocidental) também é suportada com a opção “-1252”. Para outras páginas de código, use o dos2unix em combinação com o iconv . O iconv pode converter entre uma longa lista de codificações de caracteres.

Nunca use a conversão ISO em arquivos de texto Unicode. Ele corromperá os arquivos codificados em UTF-8.

Alguns exemplos:

Converta da página de código padrão do DOS para o Unix Latin-1:

dos2unix -iso -n in.txt out.txt

Converta do DOS CP850 para Unix Latin-1:

dos2unix -850 -n in.txt out.txt

Converta do Windows CP1252 para Unix Latin-1:

dos2unix -1252 -n in.txt out.txt

Converta do Windows CP1252 para Unix UTF-8 (Unicode):

iconv -f CP1252 -t UTF-8 in.txt | dos2unix> out.txt

Converta da página de código padrão do Unix Latin-1 para DOS:

unix2dos -iso -n in.txt out.txt

Converta de Unix Latin-1 para DOS CP850:

unix2dos -850 -n in.txt out.txt

Converter de Unix Latin-1 para Windows CP1252:

unix2dos -1252 -n in.txt out.txt

Converta de Unix UTF-8 (Unicode) para Windows CP1252:

unix2dos <in.txt | iconv -f UTF-8 -t CP1252> out.txt

Consulte também http://czyborra.com/charsets/codepages.html e http://czyborra.com/charsets/iso8859.html .

NOTA: Os modos de conversão ascii , 7bit e iso são semelhantes aos do dos2unix / unix2dos no SunOS / Solaris.

Unicode

Codificações

Existem diferentes codificações Unicode. No Linux, os arquivos Unicode geralmente são codificados na codificação UTF-8. No Windows Unicode, os arquivos de texto podem ser codificados em big endian UTF-8, UTF-16 ou UTF-16 , mas geralmente são codificados no formato UTF-16.

Conversão

Os arquivos de texto Unicode podem ter quebras de linha do DOS, Unix ou Mac, como arquivos de texto comuns.

Todas as versões do dos2unix e unix2dos podem converter arquivos codificados em UTF-8, porque o UTF-8 foi projetado para compatibilidade com versões anteriores do ASCII.

dos2unix e unix2dos com suporte a Unicode UTF-16 pode ler arquivos de texto codificados em UTF-16, pequenos e grandes endian. Para verificar se o dos2unix foi construído com o suporte UTF-16, digite ” dos2unix -V “.

As versões para Windows do dos2unix e do unix2dos convertem os arquivos codificados em UTF-16 sempre em arquivos codificados em UTF-8. As versões Unix do dos2unix / unix2dos convertem os arquivos codificados em UTF-16 na codificação de caracteres do código do idioma quando é definido como UTF-8. Use o comando locale para descobrir qual é a codificação de caracteres do local.

Como os arquivos de texto formatados em UTF-8 são bem suportados no Windows e Unix, o dos2unix e o unix2dos não têm opção para gravar arquivos UTF-16. Todos os caracteres UTF-16 podem ser codificados em UTF-8. A conversão de UTF-16 para UTF-8 é sem perdas. Os arquivos UTF-16 serão ignorados no Unix quando a codificação de caracteres da localidade não for UTF-8, para evitar a perda acidental de texto. Quando ocorre um erro de conversão UTF-16 em UTF-8, por exemplo, quando o arquivo de entrada UTF-16 contém um erro, o arquivo será ignorado.

A conversão de ISO e modo de 7 bits não funciona em arquivos UTF-16.

Marca de ordem de bytes

No Windows, os arquivos de texto Unicode geralmente têm uma BOM (Marca de Ordem de Byte), porque muitos programas do Windows (incluindo o Bloco de Notas) adicionam BOMs por padrão. Veja também https://en.wikipedia.org/wiki/Byte_order_mark .

No Unix, os arquivos Unicode normalmente não têm uma lista técnica. Supõe-se que os arquivos de texto sejam codificados na codificação de caracteres do código do idioma .

O dos2unix pode detectar apenas se um arquivo está no formato UTF-16 se o arquivo tiver uma lista técnica. Quando um arquivo UTF-16 não possui uma lista técnica, o dos2unix vê o arquivo como um arquivo binário.

Use dos2unix em combinação com iconv para converter um arquivo UTF-16 sem BOM.

O Dos2unix nunca grava uma BOM no arquivo de saída, a menos que você use a opção ” -m “.

O Unix2dos grava uma BOM no arquivo de saída quando o arquivo de entrada possui uma BOM ou quando a opção ” -m ” é usada.

Exemplos

Converta do Windows UTF-16 (com BOM) para Unix UTF-8:

dos2unix -n in.txt out.txt

Converta do Windows UTF-16 (sem BOM) para Unix UTF-8:

iconv -f UTF-16 -t UTF-8 in.txt | dos2unix> out.txt

Converta de Unix UTF-8 para Windows UTF-8 com BOM:

unix2dos -m -n in.txt out.txt

Converta de Unix UTF-8 para Windows UTF-16:

unix2dos <in.txt | iconv -f UTF-8 -t UTF-16> out.txt

Conversão Recursiva

Use o dos2unix em combinação com os comandos find e xargs para converter recursivamente arquivos de texto em uma estrutura de árvore de diretórios. Por exemplo, para converter todos os arquivos .txt na árvore de diretórios no tipo de diretório atual:

encontrar . -name * .txt | xargs dos2unix

Localização

LANG

O idioma principal é selecionado com a variável de ambiente LANG . A variável LANG consiste em várias partes. A primeira parte está em letras minúsculas o código do idioma. O segundo é opcional e é o código do país em letras maiúsculas, precedido por um sublinhado. Há também uma terceira parte opcional: codificação de caracteres, precedida por um ponto. Alguns exemplos de shells do tipo padrão POSIX :

exportar LANG = nlholandês
exportar LANG = nl_NLHolandês, Holanda
exportar LANG = nl_BEHolandês, Bélgica
exportar LANG = es_ESEspanhol, espanha
exportar LANG = es_MXEspanhol, México
exportar LANG = pt_BR.iso88591Inglês, EUA, codificação Latin-1
exportar LANG = en_GB.UTF-8Codificação em inglês, Reino Unido, UTF-8

Para obter uma lista completa dos códigos de idioma e país, consulte o manual gettext: https://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes

Nos sistemas Unix, você pode usar o comando locale para obter informações específicas do local.

LÍNGUA

Com a variável de ambiente LANGUAGE , você pode especificar uma lista prioritária de idiomas, separados por dois pontos. Dos2unix dá preferência a LANGUAGE sobre LANG . Por exemplo, primeiro holandês e depois alemão: ” LANGUAGE = nl: de “. Você deve primeiro ativar a localização, definindo LANG (ou LC_ALL ) para um valor diferente de ” C “, antes de poder usar uma lista de prioridades de idiomas através da variável LANGUAGE . Veja também o manual do gettext: https://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable

Se você selecionar um idioma que não está disponível, receberá as mensagens em inglês padrão.

DOS2UNIX_LOCALEDIR

Com a variável de ambiente DOS2UNIX_LOCALEDIR, o conjunto LOCALEDIR durante a compilação pode ser substituído. LOCALEDIR é usado para encontrar os arquivos de idioma. O valor padrão do GNU é ” / usr / local / share / locale “. Opção –version exibe o LOCALEDIR usado.

Exemplo ( shell POSIX ):

exportar DOS2UNIX_LOCALEDIR = $ HOME / compartilhamento / localidade

Retornar valores

Em caso de sucesso, zero é retornado. Quando ocorre um erro do sistema, o último erro do sistema será retornado. Para outros erros, 1 é retornado.

O valor de retorno é sempre zero no modo silencioso, exceto quando opções de linha de comando incorretas são usadas.

Exemplos

dos2unix

Obtenha entrada do stdin e grave a saída no stdout.

dos2unix a.txt b.txt
dos2unix -o a.txt b.txt

Os dois comandos acima farão a mesma coisa: converter e substituir ambos a.txt e b.txt em um comando.

dos2unix -k a.txt

Converte e substitui a.txt , mantendo o carimbo de data original.

22 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.