vimdiff pour comparer la sortie au lieu des fichiers


15

J'essaie de comparer deux sorties de commande (aucun fichier)

vimdiff "$(tail /tmp/cachain.pem)" "$(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)"

J'ai essayé de jouer avec la redirection, le pipe, vim - -cmais je dois manquer quelque chose. Quelqu'un peut-il aider s'il vous plaît ?

Réponses:


23

Vous confondez $(…)avec <(…). Vous avez utilisé l'ancien, qui passe la sortie comme arguments à vimdiff. Par exemple, si la dernière ligne de /path/to/foocontient bar bar bar, la commande suivante

echo $(tail -1 /path/to/foo)

est équivalent à

echo bar bar bar

Au lieu de cela, vous devez utiliser <(…). Ceci est appelé substitution de processus et transmet la sortie sous forme de pseudo-fichier à la vimdiffcommande. Par conséquent, utilisez ce qui suit.

vimdiff <(tail /tmp/cachain.pem) <(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)

Cela fonctionne dans bash et zsh, mais apparemment il n'y a aucun moyen de faire la substitution de processus dans tcsh.


ce n'est que dans bash, cependant
simona

@simona Fonctionne aussi pour moi dans zsh. Probablement csh et tcsh également.
Sparhawk

@Sparhawk ça ne marche pas dans tcsh
simona

@simona Merci pour cette information; Je ne connais pas tcsh. Vous pourriez envisager de mettre en place une réponse qui fonctionne dans tsch. À votre santé.
Sparhawk

@Sparhawk apparemment, il n'y a aucun moyen d'y parvenir tcshsans créer un fichier unix.stackexchange.com/questions/5111/…
simona
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.