El objetivo es utilizar la línea de comandos para abrir un archivo PDF en una página específica. La pregunta más general es ¿cómo puedo saber qué argumentos están disponibles para una aplicación determinada? Puedo abrir un archivo pdf en la línea de comandos de Mac OS X con el open
comando, y sé que puede pasar argumentos, pero no pude averiguar los argumentos exactos para abrir el archivo PDF en la página 5.
Intenté lo siguiente a ciegas, y no funcionó ...
open file.pdf --args -page=5
open file.pdf --args -p 5
open file.pdf --args -page 5
He visto esta pregunta , pero la solución requiere instalar evince o escribir Apple Script. ¿No hay una solución fácil simplemente pasando --args en Mac al igual que en la línea de comandos de Windows?
macos
command-line
pdf
terminal.app
tomate
fuente
fuente
open
comando. Para ver qué argumentos puede aceptar, escribaman open
.man open
da los argumentos para el comandoopen
, que van todos antes del nombre del archivo, por ejemplo,-a
para especificar la aplicación. Pero pensé que necesitaba llamar a '--args' para pasar algún tipo de parámetro de página al lector de PDF en este caso. No sé qué argumentos podría pasar? Si pudieras dar un ejemplo que sería muy apreciado ...Respuestas:
No tenía idea de que todas las aplicaciones de Windows entendían los argumentos de la línea de comandos.
Si ese es el caso o no, no es el caso en Mac OS. Cuando utiliza la aplicación Terminal, está interactuando con un subsistema BSD que sigue todos los patrones que esperaría de un sistema operativo UNIX o Linux.
Existen abundantes recursos para familiarizarse con el shell bash y la línea de comandos * NIX. Para comenzar, el
man
comando le dará la página de manual de cualquier comando que ingrese. Generalmente, todas las "palabras" separadas por espacios que escribe después de un comando se tratan como argumentos para ese comando, al menos hasta que llegue a algún tipo de redirección de salida o el carácter de control como|
,<
,>
,&
.Así que en su ejemplo, estuviera llamando
open
y pasandofile.pdf
,--args
y-page=5
como argumentos. Como has observado,open
no sabe qué hacer con la mayoría de estos.De todos modos, profundicemos. La mayoría de las aplicaciones (como Preview.app en este caso) tienen un archivo ejecutable en algún lugar de su paquete de aplicaciones. En realidad, puede ejecutar this (
/Applications/Preview.app/Contents/MacOS/Preview
) para iniciar la Vista previa directamente sin pasaropen
, pero solo ciertos ejecutables diseñados específicamente comprenderán los argumentos de la línea de comandos.Preview
No es uno de ellos.El
man
comando solo funciona para los comandos que tienen instaladas páginas de manual, y generalmente solo serán comandos en la$PATH
variable de su shell . Para otros ejecutables, (y generalmente también para los estándar), puede intentar llamar al ejecutable con un--help
argumento para obtener información de uso, ya sea que esté o no en su ruta. Esto no funcionará para todo, pero es un patrón común.Por lo tanto, puede haber un lector de PDF por ahí cuyo ejecutable entienda los argumentos de la línea de comandos, pero si todavía estamos trabajando con Vista previa, tenemos que cambiar a un paradigma diferente: AppleScript . Puede leerlo todo en Wikipedia, pero lo básico es que es un lenguaje de script de lenguaje natural que le permite enviar eventos de Apple mediante programación a las aplicaciones. Algunas aplicaciones implementan extensas bibliotecas AppleScript para permitir una mayor automatización.
La buena noticia aquí es que puede procesar AppleScript en la línea de comandos con
osascript
. Aún más buenas noticias es que la gente ya ha resuelto su problema de AppleScript de hacer que Vista previa pase a una página en un PDF aquí: https://discussions.apple.com/thread/3215851Entonces, ¿cuál debería ser su enfoque para resolver su problema?
open file.pdf
debería funcionar bien.fuente