Eu tenho um arquivo e uma entrada provenientes de um tubo. Eles são idênticos. Então, por que o colordiff
relatório informa diferenças ?:
echo "123" | colordiff <(echo "123") -
1d0
< 123
Parece que este é um causador do problema. Com diff puro, tudo funciona bem.
diff <(echo "123") <(echo "123")
Respostas:
Usando diff
Isso funciona para mim. Parece ser um problema com sua versão específica de
diff
?Exemplo
Minha versão
Você também pode tentar este formulário alternativo:
Mas de qualquer forma, deve informar que eles são idênticos.
E o colordiff?
Bem, este método mostra que são os mesmos.
No entanto, como você indicou
echo
, de fato, relate essas duas cadeias de caracteres como sendo diferentes:Mas perceba que
colordiff
é realmente apenas um wrapper de script Perl em torno do GNU diff.Como é um script Perl, você pode executá-lo através do depurador Perl para ver o que está acontecendo:
Eu acho que a conclusão aqui é que
colordiff
não está equipado para receber entradas via STDIN (-
), ele foi projetado apenas para receber entradas de arquivos.Pesquisando, existem vários erros arquivados em relação à falta desse recurso:
Ramo de desenvolvimento do colordiff
Encontrei isso no github, kimmel / colordiff . Parece ser uma versão mais recente que lida melhor com o STDIN, na minha breve olhada na fonte.
Formas alternativas que funcionam
Você pode usar
diff
para gerar diferenças e canalizar a saídacolordiff
posteriormente.Encontrei isso no fork / branch do daveewart
colordiff
, disponível aqui no github . Há um número bastante grande de outras formas que você pode chamarcolordiff
, talvez uma delas atenda às suas necessidades.fonte