1 votos

¿Cómo abrir un PDF como variable BASH?

Estoy tratando de abrir un PDF usando Vista Previa donde el archivo de entrada es un shell var:

$ pdf=$(wget -qO- 'http://website.com/file.pdf') && open "$pdf"

$ pdf=$(wget -qO- 'http://website.com/file.pdf') && open -a /Applications/Preview.app -f "$pdf"

$ open -a /Applications/Preview.app $(wget -qO- 'http://website.com/file.pdf')

$ pdf=$(wget -qO- 'http://website.com/file.pdf') | open -a /Applications/Preview.app -f -

etc. etc.

Siempre me sale el mismo error:

-bash: /usr/bin/open: Lista de argumentos demasiado larga

¿Es posible hacerlo?

PDF de ejemplo para quien quiera probar:

https://www.exploit-db.com/docs/english/44592-linux-restricted-shell-bypass-guide.pdf

3voto

Oskar Puntos 1242

Genial problema que muestra lo increíble que son bash, pipes y open. Usted es tan cerca en el cuarto intento:

wget -qO- 'https://www.com/big.pdf' | open -f -a Preview.app

Por suerte el -a permite que el -f tomar los datos de stdin pero no abrir en TextEdit.

1voto

Bastien Durel Puntos 116

Puede abrir un PDF como una variable Bash (expresada como una ruta al archivo) de la siguiente manera.

  1. Establece tu variable:

    pdf=/path/to/44592-linux-restricted-shell-bypass-guide.pdf
  2. Abre el archivo así:

    open "$pdf" -a Preview

Sin embargo, su ejemplo indica que el archivo no existe en su sistema de archivos. Si quiere abrir un flujo de datos sin procesar almacenado en una variable, le recomiendo que se haga eco de su variable, y la canalice a open utilizando el -f opción como esta.

  1. Defina su variable:

    pdf=$(wget -qO- https://www.exploit-db.com/docs/english/44592-linux-restricted-shell-bypass-guide.pdf)
  2. Abrir los datos en bruto como un flujo desde la entrada estándar:

    echo $pdf | open -f -a Preview

Explicación: Si almacena la salida de wget -qO- … como una variable, en lugar de descargar el archivo en su sistema de archivos, open no sabrá qué hacer ya que le estás pasando los datos brutos del archivo en lugar de la ruta del mismo. En man open 'archivo' se refiere a un archivo que se puede abrir para la aplicación dada, la variable en su ejemplo no es eso. El -f es útil en este caso, ya que su método para establecer la variable implica el almacenamiento de todo el flujo de archivos, que no será interpretado como un archivo por open y, por tanto, sólo puede abrirse como un flujo de archivos.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X