Usando diff
Isso funciona para mim. Parece ser um problema com sua versão específica de diff
?
Exemplo
$ echo "123" | diff <(echo "123") -
$
Minha versão
$ diff --version
diff (GNU diffutils) 3.3
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Paul Eggert, Mike Haertel, David Hayes,
Richard Stallman, and Len Tower.
Você também pode tentar este formulário alternativo:
$ diff <(echo "123") <(echo "123")
$
Mas de qualquer forma, deve informar que eles são idênticos.
E o colordiff?
Bem, esse método mostra que eles são iguais.
$ colordiff <(echo "123") <(echo "123")
$
No entanto, como você indicou usando echo
, de fato, relata essas duas sequências como diferentes:
$ echo "123" | colordiff <(echo "123") -
1d0
< 123
Mas perceba que colordiff
é realmente apenas um wrapper de script Perl em torno do diff do GNU.
$ head /usr/bin/colordiff
#!/usr/bin/perl -w
########################################################################
# #
# ColorDiff - a wrapper/replacment for 'diff' producing #
# colourful output #
# #
# Copyright (C)2002-2012 Dave Ewart ([email protected]) #
# #
########################################################################
Como é um script Perl, você pode executar o script pelo depurador Perl para ver o que está acontecendo:
$ echo "123" | perl -d /usr/bin/colordiff <(echo "123") -
Acho que a linha de fundo aqui é que colordiff
não está equipado para receber entrada via STDIN ( -
), ele é projetado apenas para receber entrada de arquivos.
Pesquisando, há vários bugs arquivados em relação à falta desse recurso:
- colordiff: não funciona quando os argumentos são fornecidos, mas parte do shell script usa stdin
- Re: [bug-diffutils] Erro comparando com stdin
- Re: [colordiff-misc] Erro no manuseio de stdin
Filial de desenvolvimento do colordiff
Eu encontrei isso no github, kimmel / colordiff . Parece ser uma versão mais nova que lida melhor com STDIN, em minha rápida olhada na fonte.
Formas alternativas que funcionam
Você pode usar diff
para gerar as diferenças e enviar a saída para colordiff
posteriormente.
$ echo "123" | diff -u <(echo "123") - | colordiff
Encontrei isso no fork / branch da daveewart de colordiff
, disponível aqui no github . Há um número bastante grande de outros formulários que você pode chamar de colordiff
, talvez um deles atenda às suas necessidades.