¿Cómo combino estos dos comandos de shell en un Servicio?

3

Ejecuto los siguientes dos comandos en los archivos de rebajas para obtener un PDF bien formateado.

pandoc file.md -o file.html --css=markdown.css 
prince file.html file.pdf
rm file.html

¿Cómo puedo automatizar esto? Me gustaría hacer clic con el botón derecho en un archivo de rebajas, navegar a los servicios y elegir convertir las rebajas a PDF.

Sé que debería usar Automator y lo intenté pero no pude enlazar los pasos correctos. En mi ejemplo anterior, archivo es el nombre de archivo que debe ser el argumento. Llegué a iniciar un nuevo servicio de Automator, seleccioné Files & Folders y Get Selected Finder Items y me quedé atascado allí.

Actualización : Pandoc = enlace

Prince = enlace

Actualización # 2 para mayor claridad

Si estoy en una carpeta con un archivo de rebajas llamado test.md, la sintaxis completa de la línea de comandos sería:

pandoc --from=markdown --to=html test.md --css=~path/to/css/markdown.css -o test.html

(Nota: He podido automatizar esto como un servicio y lo he llamado Markdown to HTML)

Aquí está ese código:

 for f in "$@"
 do 
/usr/local/bin/pandoc --from=markdown --to=html "$f" --css=/Users/fooo/Documents/Code/css/markdown.css -o "$f".html 
done

Ahora, convertir ese bit de html a PDF es algo que no puedo vincular. Pero la sintaxis de la línea de comandos sería:

prince test.html -o test.pdf
    
pregunta Maiasaura 03.02.2012 - 19:35

2 respuestas

3

¿Qué pasa con un servicio de Automator como este:

Lacargaútileselscriptdeshell

forfin"$@"
 do
    pandoc "$f" --css=markdown.css | prince - "$f".pdf
 done

Cualquiera que sea el archivo o archivos seleccionados, el servicio los ejecuta a través del analizador Markdown de pandoc , luego toma el html resultante y lo procesa con prince , asignando a la salida el nombre del archivo original con una extensión .pdf agregada.

La canalización elimina la necesidad de que usted administre archivos temporales.

    
respondido por el Daniel 03.02.2012 - 21:10
0

Vaya a Automator y cree un nuevo servicio:

Luegoagregueunscriptdeshell:

Información detallada aquí

    
respondido por el daviesgeek 03.02.2012 - 19:47

Lea otras preguntas en las etiquetas