AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 498815
Accepted
Vorac
Vorac
Asked: 2019-02-06 07:02:54 +0800 CST2019-02-06 07:02:54 +0800 CST 2019-02-06 07:02:54 +0800 CST

Ferramenta de comparação de linha de comando

  • 772

Então todos nós temos o diffcomando instalado por padrão. Eu certamente não sei como usá-lo bem . Mas eu esperaria algum uso padrão razoável. Mas quando eu digito diff file1 file2eu recebo... um texto... que eu tenho que analisar na minha cabeça... o que não é ajudado pelo fato de que esta é uma combinação estranha de dois textos, que por sua vez são muito complexos.

Então procurei uma solução gráfica, por exemplo meld. Isso funciona muito melhor fora da caixa.

No entanto, eu preferiria ter o luxo de ficar na linha de comando o tempo todo. Existe um comando bastante padrão que:

  • usa cor por padrão e pode adotar realce de sintaxe
  • apresenta diferenças lado a lado e faz fusões de 3 vias por padrão
  • funciona na linha de comando, por exemplo, vialibncurses
  • não depende de nenhum vim, emacsnem de um IDE
  • pode modificar arquivos editados no local?

Se não, por que não? Dei uma olhada colordiffmas não deu certo.

command-line diff
  • 2 2 respostas
  • 3910 Views

2 respostas

  • Voted
  1. StayOnTarget
    2022-08-02T05:27:29+08:002022-08-02T05:27:29+08:00

    Parece que o delta atenderia a muitos desses requisitos:

    https://github.com/dandavison/delta

    Recursos de resumo:

    • Destaque de sintaxe de idioma...
    • Diferença em nível de palavra destacando...
    • Vista lado a lado com quebra de linha
    • Exibição de conflito de mesclagem aprimorada
    • O código pode ser copiado diretamente do diff (marcadores -/+ são removidos por padrão).
    • Página do GitHub/GitLab/Bitbucket (--hiperlinks). Os caminhos de arquivo também podem ser formatados como hiperlinks para abertura em seu sistema operacional.

    ...

    Exemplo de captura de tela do link acima:

    insira a descrição da imagem aqui

    • 4
  2. Best Answer
    Jürgen
    2019-02-06T08:21:59+08:002019-02-06T08:21:59+08:00

    Temo que esta resposta não o satisfaça, mas acho que você apresenta restrições conflitantes.

    Sobre a diferença

    Mas primeiro tenho que defender a clássica ferramenta diff: Seu objetivo principal é gerar patches de software que devem ser processados ​​por máquinas na aplicação. Além disso, esses patches são projetados para serem o mais compactos possível e usar, idealmente, apenas caracteres ASCII, para que possam ser compartilhados de forma rápida e confiável via e-mail, Usenet, etc.

    Que esses patches possam ser lidos por humanos (e compreendidos por alguns humanos) também é uma propriedade importante, mas não a prioridade máxima.

    Sua pergunta

    Eu entendo e compartilho seu desejo por ferramentas de linha de comando simples e elementares, mas uma comparação lado a lado, possivelmente com realce de cores, não é simples nem está dentro do escopo do que podemos esperar de uma ferramenta de linha de comando real, simplesmente porque ele não é mais orientado a linhas.

    O que vem a seguir são ferramentas baseadas em Vi ou Emacs, que são tão simples e claras para a recepção humana quanto possível, sendo altamente flexíveis ao mesmo tempo. Eles também oferecem recursos de mesclagem poderosos.

    Forma aqueles, vimdiffjá foi mencionado nos comentários .

    Com relação ao Emacs, as comparações de arquivos geralmente são iniciadas a partir do editor. A ferramenta mais utilizada para isso é o Ediff, que oferece inúmeros pontos de entrada que correspondem às diversas necessidades: comparação de dois arquivos, arquivos de árvore, um deles tratado como ancestral comum, etc. O mesmo com possíveis fusões.

    Embora incomum, eu configurei um acesso ao Ediff a partir da linha de comando: Se você iniciar o Emacs com

    emacs FILE1 FILE2 -nw --eval "(apply 'ediff-buffers (last (nreverse (buffer-list)) 2))"
    

    então você pula diretamente em uma sessão interativa do Ediff que compara FILE1e FILE2dentro do seu terminal. Se você omitir a -nwopção (e todos os requisitos forem atendidos), você obterá a mesma sessão em um quadro gráfico separado. Veja também esta pergunta relacionada por ashutosh jain.

    Ok, eu não iria tão longe para chamar o Emacs de uma ferramenta fácil. Mas se você estudá-lo cuidadosamente por alguns anos, você vai adorar. (Opinião pessoal.)

    Então, infelizmente não: não conheço nenhuma ferramenta que atenda a todas as suas restrições.

    • 3

relate perguntas

  • Qual é a interface recomendada para um utilitário que requer muitos parâmetros? [fechado]

  • git: use visual diff (meld) somente quando estiver na GUI

  • Execute o aplicativo X remotamente, execute a GUI no host remoto [fechado]

  • Fazendo mysql CLI me pedir uma senha interativamente

  • Pub / sub de linha de comando sem um servidor?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve