miniaturadaimagem|Captura de tela de um Tkdiff Em computação, diff é um utilitário de comparação de arquivos que analisa e exibe as diferenças entre dois arquivos texto por linha. É normalmente usado para mostrar as mudanças entre uma versão de um arquivo e a versão anterior do mesmo arquivo fonte ou de configuração.
O diff mostra as alterações realizadas por linha para arquivos de texto. Implementações modernas também suportam arquivos binários. A saída é chamada de um "diff", ou um patch (remendo), uma vez que a saída pode ser aplicada com o programa patch do Unix. Na língua inglesa, a saída de utilitários similares de comparação de arquivos também são chamadas de um "diff". Assim como o uso da palavra "grep" para descrever o ato de procurar, a paravra diff é usada como jargão para diferença.
História O diff foi desenvolvido próximo de 1970 no sistema operacional Unix, que estava surgindo da Bell Labs. A primeira versão foi lançada junto com a 5° edição do Unix em 1974, e foi escrita por Douglas McIlroy, e James Hunt. A pesquisa foi publicada em 1976 no artigo co-escrito com James W. Hunt, que desenvolveu o protótipo original do diff. O algoritmo descrito pelo artigo ficou conhecido por algoritmo Hunt-Szymanski.
Algoritmo A operação de diff é baseado na solução do problema de maior subsequência comum (LCS).
Neste problema, são dadas duas sequências de itens: a b c d f g h j q z
a b c d e f g i j k r x y z e nós queremos achar a maior subsequência de itens que está presente em ambos as sequências na mesma ordem. Ou seja, queremos achar uma nova sequência por deletar alguns itens da primeira sequência original, e da segunda por deletar outros itens. Também queremos que esse sequência seja a mais longa possível. No caso seria: a b c d e f g j z Isso é apenas um pequeno passo para conseguirmos uma saída parecida com diff: se um item não existe na subsequência mas está presente na primeira sequência original, ele deve ser deletado (como indicado pelo marcador '-', abaixo). Se um item não existe na subsequência mas está presente na segunda sequência original, ele deve ser adicionado (como indicado pelo marcador '+'). e h i q k r x y + - + - + + + +
Ver também
Guia de comandos para Linux/Unix
Ligações externas
Página de manual
Categoria:Programas padrões do Unix Categoria:Linguagens formais Categoria:Software de 1974