¿Cómo abrir PDF como variable BASH?

1

Estoy intentando abrir un PDF usando Vista previa donde el archivo de entrada es una variante de shell:

$ 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 etc

Siempre me sale el mismo error:

  

-bash: / usr / bin / open: la lista de argumentos es demasiado larga

¿Es posible hacer esto?

PDF de ejemplo para cualquier persona que quiera probar:

enlace

    
pregunta lily 12.05.2018 - 04:09

2 respuestas

4

Problema genial que muestra cuán asombrosos son los toques, las tuberías y los abiertos. Estás muy cerca en el cuarto intento:

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

Afortunadamente, el argumento -a permite que -f tome los datos de la entrada estándar pero no se abra en TextEdit.

    
respondido por el bmike 12.05.2018 - 04:48
1

Puedes abrir un PDF como una variable Bash (expresada como una ruta al archivo) de esta manera.

  1. Establece tu variable:

    pdf=/path/to/44592-linux-restricted-shell-bypass-guide.pdf
    
  2. Abre el archivo de esta manera:

    open "$pdf" -a Preview
    

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

  1. Defina su variable:

    pdf=$(wget -qO- https://www.exploit-db.com/docs/english/44592-linux-restricted-shell-bypass-guide.pdf)
    
  2. Abra los datos sin procesar como una secuencia 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á pasando los datos sin procesar del archivo en lugar de la ruta al archivo. . 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. La opción -f es útil en este escenario, ya que su método de configuración de la variable implica almacenar la secuencia de archivos completa, que no se interpretará como un archivo por open , y por lo tanto, solo se puede abrir como una secuencia de archivos.

    
respondido por el Dials Mavis 12.05.2018 - 05:23

Lea otras preguntas en las etiquetas