Friday 27 October 2017

Diff thinks files are binary options


1.7 Arquivos binários e forçando comparações de texto Se diff acha que um dos dois arquivos que está comparando é binário (um arquivo não-texto), normalmente trata esse par de arquivos muito como se o formato de saída sumário tivesse sido selecionado (veja Brief) , E relata apenas que os arquivos binários são diferentes. Isso ocorre porque as comparações linha a linha geralmente não são significativas para arquivos binários. Isso não conta como problema, mesmo que a saída resultante não captura todas as diferenças. Diff determina se um arquivo é texto ou binário verificando os primeiros poucos bytes no arquivo o número exato de bytes é dependente do sistema, mas normalmente é vários mil. Se cada byte naquela parte do arquivo não for nulo, diff considera o arquivo ser texto, caso contrário ele considera o arquivo como binário. Às vezes, você pode querer forçar o diff para considerar arquivos serem texto. Por exemplo, você pode estar comparando arquivos de texto que contêm caracteres nulos diff seria erroneamente decidir que esses são arquivos não-texto. Ou você pode estar comparando documentos que estão em um formato usado por um sistema de processamento de texto que usa caracteres nulos para indicar formatação especial. Você pode forçar o diff a considerar todos os arquivos como arquivos de texto e compará-los linha a linha, usando a opção --text (-a). Se os arquivos que você compara usando esta opção não contiverem texto, eles provavelmente conterão poucos caracteres de nova linha ea saída diff consistirá de pedaços mostrando diferenças entre as longas linhas de quaisquer caracteres que os arquivos contenham. Você também pode forçar diff a relatar apenas se os arquivos são diferentes (mas não como). Use a opção --brief (-q) para isso. Em sistemas operacionais que distinguem entre texto e arquivos binários, diff normalmente lê e grava todos os dados como texto. Use a opção --binary para forçar diff a ler e gravar dados binários em vez disso. Esta opção não tem efeito em um sistema compatível com POSIX como o GNU ou o Unix tradicional. No entanto, muitos sistemas operacionais de computadores pessoais representam o fim de uma linha com um retorno de carro seguido por uma nova linha. Em tais sistemas, diff normalmente ignora esses retornos de carro na entrada e os gera no final de cada linha de saída, mas com a opção bin binária diff trata cada retorno de carro como apenas outro caractere de entrada e não gera um retorno de carro no Final de cada linha de saída. Isso pode ser útil ao lidar com arquivos não-texto que devem ser intercambiados com sistemas compatíveis com POSIX. O --strip-trailing-cr faz com que diff trate linhas de entrada que terminam em retorno de carro seguido de nova linha como se terminassem em linha simples. Isso pode ser útil ao comparar texto importado imperfeitamente de muitos sistemas operacionais de computadores pessoais. Esta opção afeta a forma como as linhas são lidas, o que, por sua vez, afeta como elas são comparadas e produzidas. Se você quiser comparar dois arquivos byte por byte, você pode usar o programa cmp com a opção --verbose (-l) para mostrar os valores de cada byte diferente nos dois arquivos. Com GNU cmp. Você também pode usar a opção - b ou - print-bytes para mostrar a representação ASCII desses bytes. Consulte Invocar cmp. Para maiores informações. Se o diff3 pensa que qualquer um dos arquivos que está comparando é binário (um arquivo que não é de texto), ele normalmente relata um erro, porque essas comparações normalmente não são úteis. Diff3 usa o mesmo teste como diff para decidir se um arquivo é binário. Tal como acontece com o diff. Se os arquivos de entrada contiverem alguns bytes não-texto, mas caso contrário são como arquivos de texto, você pode forçar o diff3 a considerar todos os arquivos como arquivos de texto e compará-los linha a linha usando a opção - a ou --text.13.1 Opções para Diff Abaixo está um resumo de todas as opções que o GNU diff aceita. A maioria das opções tem dois nomes equivalentes, um dos quais é uma única letra precedida por lsquo - rsquo, eo outro é um nome longo precedido por lsquo - rsquo. Múltiplas opções de letra única (a menos que eles tomem um argumento) podem ser combinadas em uma única palavra de linha de comando: - ac é equivalente a - a - c. As opções chamadas longas podem ser abreviadas para qualquer prefixo exclusivo de seu nome. Brackets (e) indicam que uma opção possui um argumento opcional. Trate todos os arquivos como texto e compare-os linha por linha, mesmo que eles não parecem ser texto. Consulte Binário. Ignore as mudanças na quantidade de espaço em branco. Veja Espaço em branco. Ignorar alterações que apenas inserir ou excluir linhas em branco. Consulte Linhas em branco. Leia e escreva dados no modo binário. Consulte Binário. Use o formato de saída de contexto, mostrando três linhas de contexto. Consulte o Context Format. Especifique se deseja usar cor para distinguir diferentes contextos, como cabeçalho, linhas adicionadas ou removidas. Quando pode ser omitido, ou um de: nenhum. Não use cor. Esse é o padrão quando nenhuma opção ndashcolor é especificada. Auto Use a cor somente se a saída padrão for um terminal. Sempre Sempre use cor. Especificando --color e não quando é equivalente a --colorauto. Linhas - C - linhas de texto Use o formato de saída de contexto, mostrando linhas (um número inteiro) linhas de contexto ou três se as linhas não forem dadas. Consulte o Context Format. Para uma operação adequada, o patch geralmente precisa de pelo menos duas linhas de contexto. Para a diferença de compatibilidade também suporta uma sintaxe de opção obsoleta - linhas que têm efeito quando combinadas com - c. - p. Ou - u. Os novos scripts devem usar linhas - U (linhas C). Use o formato para exibir um grupo de linhas contendo diferentes linhas de ambos os arquivos no formato if-then-else. Consulte Formatos de grupos de linhas. Altere o algoritmo talvez encontrar um conjunto menor de alterações. Isso torna diff mais lento (às vezes muito mais lento). Veja Performance diff. - D nome --ifdef name Faça a saída do formato rsquo lsquo sequedada, condicional no nome da macro do pré-processador. Veja If-then-else. Faça o resultado que é um script ed válido. Veja scripts ed. Ignorar alterações devido à expansão de tabulação. Veja Espaço em branco. Faça o resultado que parece vagamente como um script ed, mas tem alterações na ordem em que aparecem no arquivo. Consulte Forward ed. - F regexp --show-function-line regexp Em contexto e formato unificado, para cada pedaço de diferenças, mostre alguma da última linha precedente que corresponde a regexp. Consulte Cabeçalhos especificados. O arquivo de comparação para cada arquivo de operando pode ser um diretório. Execute um resumo do uso e saia. Não descarte as últimas linhas de linhas do prefixo comum e as linhas de primeira linha do sufixo comum. Veja Performance diff. Ignorar alterações no caso de considerar letras maiúsculas e minúsculas equivalentes. Consulte Dobradura de caixa. - I regexp --ignore-matching-lines regexp Ignore as alterações que apenas inserem ou excluem linhas que combinam com regexp. Consulte Linhas especificadas. Ignore o caso ao comparar nomes de arquivos. Por exemplo, a comparação recursiva de d a e pode comparar os conteúdos de dInit e einIt. No nível superior, lsquo diff d inIt rsquo pode comparar o conteúdo de dInit e inIt. Consulte Comparação de diretórios. Passe a saída através de pr para paginá-lo. Consulte Paginação. - L rótulo - rótulo de etiqueta Use o rótulo em vez do nome do arquivo no formato de contexto (veja Formato de Contexto) e cabeçalho de formato unificado (ver Formato Unificado). Veja RCS. Imprima apenas a coluna esquerda de duas linhas comuns no formato lado a lado. Consulte Formato lado a lado. Use formato para produzir todas as linhas de entrada no formato if-then-else. Consulte Formatos de linha. Output RCS - format diffs como - f exceto que cada comando especifica o número de linhas afetadas. Veja RCS. Se um arquivo estiver ausente, tratá-lo como presente, mas vazio. Consulte Comparação de diretórios. Use formato para produzir um grupo de linhas tiradas apenas do segundo arquivo no formato if-then-else. Consulte Formatos de grupos de linhas. Use formato para produzir uma linha tirada apenas do segundo arquivo no formato if-then-else. Consulte Formatos de linha. Agir sobre as ligações simbólicas em si, em vez do que eles apontam. Duas ligações simbólicas são consideradas iguais somente quando cada uma aponta para exatamente o mesmo nome. Use formato para produzir um grupo de linhas tiradas apenas do primeiro arquivo no formato if-then-else. Consulte Formatos de grupos de linhas. Use formato para produzir uma linha tirada apenas do primeiro arquivo no formato if-then-else. Consulte Formatos de linha. Mostre qual função C cada alteração está dentro. Consulte C Função Títulos. Especifique a paleta de cores a ser usada quando a saída colorida estiver ativada. Ele é padrão para lsquo rs0: hd1: ad32: de31: ln36 rsquo para linhas excluídas em vermelho, linhas verdes adicionadas, números de linhas cianas, cabeçalho em negrito. Os recursos suportados são os seguintes. SGR para linhas adicionadas. O padrão é o primeiro plano verde. Subcadeia SGR para linhas excluídas. O padrão é o primeiro plano vermelho. Subcadeia SGR para cabeçalho de pedaços. O padrão é negrito em primeiro plano. Subcadeia SGR para números de linha. O padrão é cyan primeiro plano. Informe apenas se os arquivos são diferentes, e não os detalhes das diferenças. Ver Breve. Ao comparar diretórios, comparar recursivamente quaisquer subdiretórios encontrados. Consulte Comparação de diretórios. Informe quando dois arquivos são iguais. Consulte Comparação de diretórios. - S file --starting-file file Ao comparar diretórios, comece com o arquivo de arquivo. Isso é usado para retomar uma comparação interrompida. Consulte Comparação de diretórios. Use heurísticas para acelerar o tratamento de arquivos grandes que têm várias pequenas alterações dispersas. Veja Performance diff. Tira qualquer retorno de carro de arrasto no final de uma linha de entrada. Consulte Binário. Não imprima linhas comuns no formato lado a lado. Consulte Formato lado a lado. Expanda as guias para espaços na saída, para preservar o alinhamento das guias nos arquivos de entrada. Consulte Separadores. Produz um separador em vez de um espaço antes do texto de uma linha no formato normal ou de contexto. Isso faz com que o alinhamento das guias na linha pareça normal. Consulte Separadores. Suponha que as paradas de tabulação sejam definidas em todas as colunas (padrão 8) colunas de impressão. Consulte Separadores. Suprima todos os espaços em branco antes das novas linhas ao imprimir a representação de uma linha vazia, quando a saída do formato normal, de contexto ou unificado. Consulte Espaços em branco. Compare cada operando ao arquivo de arquivo pode ser um diretório. Use o formato de saída unificado, mostrando três linhas de contexto. Consulte Formato unificado. Use formato para produzir um grupo de linhas comuns tiradas de ambos os arquivos no formato if-then-else. Consulte Formatos de grupos de linhas. Use formato para produzir uma linha comum a ambos os arquivos no formato if-then-else. Consulte Formatos de linha. Se um primeiro arquivo estiver ausente, tratá-lo como presente, mas vazio. Consulte Comparação de diretórios. - U linhas - linhas unificadas Use o formato de saída unificado, mostrando linhas (um número inteiro) linhas de contexto ou três se as linhas não forem dadas. Consulte Formato unificado. Para uma operação adequada, o patch normalmente precisa de pelo menos duas linhas de contexto. Em sistemas mais antigos, diff suporta uma opção obsoleta - linhas que tem efeito quando combinado com - u. POSIX 1003.1-2001 (consulte Conformidade de padrões) não permite este uso - U linhas em vez disso. Siga as informações da versão e saia. Ignore o espaço em branco ao comparar linhas. Veja Espaço em branco. - W colunas - columnas de largura A saída na maioria das colunas (padrão 130) imprime colunas por linha em formato lado a lado. Veja o Formato do lado a lado. Padrão - x - padrão de exclusão Ao comparar diretórios, ignore arquivos e subdiretórios cujos nomes de base correspondem ao padrão. Consulte Comparando diretórios. - X arquivo --excluir-de arquivo Ao comparar diretórios, ignore arquivos e subdiretórios cujos nomes de base correspondem a qualquer padrão contido no arquivo. Consulte Comparando diretórios. Use o formato de saída lado a lado. Veja o Formato do lado a lado. Ignorar espaço em branco na extremidade da linha. Consulte Espaço em Branco. Clique em qualquer um dos 687 comandos abaixo para obter uma descrição e uma lista de opções disponíveis. Todos os links nos resumos de comandos apontam para a versão on-line do livro no Safari Bookshelf. Compare dois arquivos de texto. Diff relata linhas que diferem entre file1 e file2. A saída consiste em linhas de contexto de cada arquivo, com o texto do arquivo1 marcado por um símbolo lt e um texto file2 por um símbolo gt. As linhas de contexto são precedidas do comando ed (a. C. Ou d) que seria usado para converter arquivo1 para arquivo2. Se um dos arquivos for -. A entrada padrão é lida. Se um dos arquivos for um diretório, o diff localiza o nome do arquivo nesse diretório correspondente ao outro argumento (por exemplo, o lixo do diff mydir é o mesmo que o infundo mydirjunk do diff). Se ambos os argumentos são diretórios, diff relatórios linhas que diferem entre todos os pares de arquivos com nomes equivalentes (por exemplo, olddirprogram e newdirprogram) além disso, diff lista nomes de arquivos únicos para um diretório, bem como subdiretórios comuns a ambos. Veja também cmp. Tente todos os arquivos como arquivos de texto. Útil para verificar se os arquivos binários são idênticos. Ignore repetir espaços em branco e espaços em branco de fim de linha tratar espaços em branco sucessivos como um. Ignore linhas em branco em arquivos. Contexto diff. Imprima 3 linhas em torno de cada linha alterada. Contexto diff. Imprima n linhas ao redor de cada linha alterada. O contexto padrão é de 3 linhas. Para acelerar a comparação, ignorar segmentos de várias mudanças e produzir um conjunto menor de alterações. Ao manusear arquivos C, crie um arquivo de saída que contenha todo o conteúdo de ambos os arquivos de entrada, incluindo as diretrizes ifdef e ifndef que refletem as diretrizes em ambos os arquivos. Produza um script de comandos (a. C. D) para recriar arquivo2 do arquivo1 usando o editor ed. Para contexto e diferença unificada. Mostra a linha mais recente contendo regexp antes de cada bloco de linhas alteradas. Saída de velocidade de arquivos grandes por varredura para pequenas mudanças espalhadas alongamentos longos com muitas mudanças podem não aparecer. Imprimir mensagem de uso breve. Na tentativa de encontrar uma listagem mais compacta, mantenha n linhas em ambos os lados das linhas alteradas ao realizar a comparação. Ignore caso na comparação de texto. Maiúsculas e minúsculas são consideradas iguais. Ignore linhas em arquivos que correspondem à expressão regular regexp. Pagine a saída passando para o pr. Para contexto e diferença unificada. Imprimir no lugar do nome do arquivo que está sendo comparado. A primeira opção se aplica ao primeiro nome do arquivo e à segunda opção ao segundo nome do arquivo. Para saída de duas colunas (-y), mostre apenas a coluna esquerda de linhas comuns. Produza saída no formato RCS diff. Trate os arquivos inexistentes como vazios. Ao manusear arquivos em linguagens C ou C, como Java, mostre a função que contém cada bloco de linhas alteradas. Assume - c. Mas também pode ser usado com um diff unificado. Se dois diretórios estão sendo comparados e o primeiro não possui um arquivo que esteja no segundo, pretenda que um arquivo vazio desse nome exista no primeiro diretório. Produza apenas se os arquivos são diferentes. Compare os subdiretórios de forma recursiva. Indique quando os arquivos não são diferentes. Para comparações de diretório, comece com o nome do arquivo. Ignorando arquivos que vêm antes na ordem de lista padrão. Para a saída de duas colunas (-y), não mostre linhas comuns. Produzir saída com abas expandidas para espaços. Insira separadores iniciais na saída para separar as abas corretamente. Dif. Unificada. Imprima versões antigas e novas de linhas em um único bloco, com 3 linhas em torno de cada bloco de linhas alteradas. Dif. Unificada. Imprima versões antigas e novas de linhas em um único bloco, com n linhas ao redor de cada bloco de linhas alteradas. O contexto padrão é 3 linhas. Imprime o número da versão desta versão do diff. Ignorar todos os espaços em branco em arquivos para comparações. Para saída de duas colunas (-y), produza colunas com uma largura máxima de n caracteres. O padrão é 130. Não compare os arquivos em um diretório cujos nomes correspondem a regexp. Não compare arquivos em um diretório cujos nomes correspondam a padrões descritos no nome do arquivo. Produza saída de duas colunas. Para contexto e dif unificado. Imprimir n linhas de contexto. Igual a especificar um número com - C ou - U. Parameters a: Abrevia a saída de uma comparação ASCII. Em vez de exibir todas as linhas que são diferentes, fc exibe apenas a primeira e última linha para cada conjunto de diferenças. B: Compara os arquivos no modo binário. Fc compara o byte de dois arquivos por byte e não tenta ressincronizar os arquivos depois de encontrar uma incompatibilidade. Este é o modo padrão para comparar arquivos que possuem as seguintes extensões de arquivo. exe. Com Sys. Obj. Lib ou. bin. C: Ignora o caso das letras. L: Compara os arquivos no modo ASCII. Fc compara os dois arquivos linha por linha e tenta resynchronize os arquivos depois de encontrar uma incompatibilidade. Esse é o modo padrão para comparar arquivos, exceto os arquivos com as seguintes extensões de arquivo. exe. Com Sys. Obj. Lib ou. bin. Lb n: Define o n número de linhas para o buffer de linha interno. O tamanho padrão do buffer de linha é 100 linhas. Se os arquivos que você está comparando tiverem mais do que esse número de linhas diferentes consecutivas, o fc cancela a comparação. N: Exibe os números de linha durante uma comparação ASCII. T: Impede que fc converta as guias em espaços. O comportamento padrão é tratar as abas como espaços, com paradas em cada posição de oitavo caracteres. U: Compara arquivos como arquivos de texto Unicode. W: Comprime espaço em branco (isto é, guias e espaços) durante a comparação. Se uma linha contém muitos espaços ou guias consecutivos, w trata esses caracteres como um único espaço. Quando usado com a opção de linha de comando w, fc ignora (e não compara) espaço em branco no início e no final de uma linha. Nnnn: Especifica o número de linhas consecutivas que devem corresponder antes que fc considere os arquivos a serem ressincronizados. Se o número de linhas correspondentes nos arquivos for menor que nnnn. Fc exibe as linhas de correspondência como diferenças. O valor padrão é 2. drive1: path1 filename1: Especifica a localização e o nome do primeiro arquivo que deseja comparar. Nome do arquivo1 é necessário. Drive2: path2 filename2: Especifica o local eo nome do segundo arquivo que você deseja comparar. Filename2 é obrigatório. : Exibe ajuda no prompt de comando. Usando b para comparações binárias b exibe desajustes encontrados durante uma comparação binária da seguinte maneira: O valor de xxxxxxxx especifica o endereço hexadecimal relativo para o par de bytes, medido desde o início do arquivo. Os endereços começam em 00000000. Os valores hexadecimais para yy e zz representam os bytes incompatíveis de filename1 e filename2. respectivamente. Você pode usar caracteres curinga (isto é, e) em filename1 e filename2. Se você usar um caractere curinga em filename1. Fc compara todos os arquivos especificados com o arquivo especificado pelo FileName. Se você usar um caractere curinga em filename2, fc usa o valor correspondente de filename1. Trabalhando com memória Ao comparar arquivos ASCII, fc usa um buffer interno (grande o suficiente para armazenar 100 linhas) como armazenamento. Se os arquivos forem maiores do que o buffer, fc compara o que ele pode carregar no buffer. Se fc não encontrar uma correspondência nas partes carregadas dos arquivos, ele pára e exibe a seguinte mensagem: Resynch falhou. Os arquivos são muito diferentes. Ao comparar arquivos binários maiores que a memória disponível, fc compara ambos os arquivos completamente, superpondo as partes na memória com as próximas porções do disco. A saída é a mesma que para arquivos que se encaixam completamente na memória. Para fazer uma comparação ASCII de dois arquivos de texto denominados Monthly. rpt e Sales. rpt e exibir os resultados em formato abreviado, digite: fc a monthly. rpt sales. rpt Para fazer uma comparação binária de dois arquivos em lotes denominados Profits. bat E Earnings. bat, digite: fc b profits. bat earnings. bat Os resultados semelhantes aos seguintes aparecem: Se os arquivos Profits. bat e Earnings. bat forem idênticos, fc exibe a seguinte mensagem: FC: sem diferenças encontradas Para comparar todas as Arquivo. bat no diretório atual com o arquivo New. bat, digite: Para comparar o arquivo New. bat na unidade C com o arquivo New. bat no drive D, digite: fc c: new. bat d:.bat Para comparar Cada arquivo em lotes no diretório raiz na unidade C para o arquivo com o mesmo nome no diretório raiz na unidade D, digite: Legenda de formatação

No comments:

Post a Comment