De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Jose Fernando Scheid Mascarenhas
Data de Publicação: 02 de Julho de 2007
O script efetua a conversão de arquivos ASCII (.txt) entre os ambientes MS-DOS e Unix/Linux. Os arquivos no formato .txt gerados no ambiente MS-DOS utilizam os caracteres 0x0d e 0x0a para delimitar suas linhas. Já no ambiente Unix/Linux, as linhas são delimitadas somente pelo caracter 0x0a. Quem já teve a oportunidade de trabalhar com o ambiente XENIX, com certeza utilizou as ferramentas dtox e xtod para efetuar tais conversões e posteriormente efetuar um ´doscp´ (mcopy no Linux) para ler/gravar os arquivos em disquete. O script dever ser copiado para o diretorio /usr/local/bin com o nome de xtod. Posteriormente executar o comando "ln xtod dtox" para criar o link. Se o script for executado com o nome de xtod a conversão será feita do formato Unix/Linux para o formato MS-DOS e ser for chamado como dtox a conversão será feita do formato MS-DOS para Unix/Linux.
Eu utilizo o script para imprimir arquivos .txt gerados no Linux em impressoras laser que às vezes costumam imprimir tudo na mesma linha.
Exemplos de utilização:
$ xtod arq1.txt | lp -dhplaser $ cal 2007 | lp -dhpjet # Converte de Linux para MS-DOS $ xtod < arq_txt.linux > arq_txt.msdos # Converte de MS-DOS para Linux $ dtox < arq_txt.msdos > arq_txt.linux
#! /bin/bash
#
# @(#) xtod/dtox v.1.0 03/10/2005
#
# Unitech Informatica Ltda
# Autor: J. Fernando Scheid Mascarenhas
# /usr/local/bin/xtod - Converte arquivos ASCII do formato Unix para o formato DOS.
# ou
# /usr/local/bin/dtox - Converte arquivos ASCII do formato DOS para o formato Unix.
#
#
CMD_NAME=`basename $0`
if [ ${CMD_NAME} = dtox ]
then
RUN_NAME="tr -d '\015'"
else
RUN_NAME="awk '{ printf(\"%s\r\n\"),\$0 }'"
fi
if [ $# -eq 0 ]
then
if [ -t 0 ]
then
echo -e "${CMD_NAME} - Convercao de arquivos ASCII\n"
echo -e "Uso:\n ${CMD_NAME} arq1 arq2 ... arqn > arq_saida"
echo -e " ou"
echo -e " <comando> \| ${CMD_NAME} > arq_saida\n"
exit 255
else
filelist="-"
fi
else
filelist="$*"
fi
for file in "$filelist"
do
cat "$file" | eval ${RUN_NAME}
done
exit 0