La siguiente de una sola línea produce un archivo HTML denominado email.html
:
diff file1 file2 | vim - +TOhtml '+w email.html' '+qall!'
Ahora puede utilizar el código de Pekka para enviar el correo electrónico.
Sin embargo,, creo en usar la herramienta adecuada para el trabajo correcto, y VIM puede no ser la herramienta adecuada aquí. Existen otros marcadores y su uso es más apropiado aquí.
Por ejemplo, Pygments puede aprovecharse para producir el mismo resultado, mucho más eficiente y libre de problemas:
diff -u report.log .report.log | pygmentize -l diff -f html > email.html
Tenga en cuenta que esto produce única el cuerpo del texto actual, no la hoja de estilo, ni el andamio HTML circundante. Esto debe agregarse por separado, pero eso tampoco es difícil. Aquí hay un script bash completa para producir un archivo HTML mínima válida:
echo '<!DOCTYPE html><html><head><title>No title</title><style>' > email.html
pygmentize -S default -f html >> email.html
echo '</style></head><body>' >> email.html
diff -u report.log .report.log | pygmentize -l diff -f html >> email.html
echo '</body></html>' >> email.html
EDITAR En caso de que el código de Pekka no trabajar - en cuanto a mí - porque no tiene las versiones requeridas de mail
y mutt
instalado, puede utilizar sendmail
de la siguiente manera para enviar el correo electrónico HTML:
(echo 'To: [email protected]'
echo 'Content-Type: text/html'
echo 'Subject: test'
echo ''
cat email.html) | sendmail -t
es importante dejar una línea en blanco entre el encabezado y el cuerpo del correo electrónico. Además, observe que, por supuesto, no es necesario crear el archivo temporal email.html
. Simplemente pegue el resto de los comandos en el lugar correcto de arriba y elimine los redireccionamientos al archivo.
tiene una definición interesante de "más eficiente y sin problemas". +1 sobre cómo hacer que vim escriba y salga de la línea de comando. – rampion
puedes cambiar el "+ w email.html" por el de "+%! Mutt" o lo que sea para que vim invoque el comando de correo directamente – rampion
@rampion: Lanzar Vim de esa manera es bastante ineficiente. Pygments lo supera fácilmente.Sin complicaciones me refiero simplemente a que el flujo de trabajo de Pygments es conceptualmente más fácil ("sintaxis-resaltar un diff", en oposición a "abrir un diff en un editor, ejecutar un comando, cerrar el editor") aunque sea más texto para escribir. Ambos métodos tienen sus méritos, creo. –