Come aprire PDF come variabile BASH?

1

Sto tentando di aprire un PDF utilizzando Anteprima in cui il file di input è una 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 etc

Ho sempre lo stesso errore:

-bash: /usr/bin/open: Argument list too long

È possibile farlo?

esempio PDF per chiunque voglia provare:

link

    
posta lily 12.05.2018 - 04:09
fonte

2 risposte

4

Problema freddo che mostra quanto siano stupefacenti bash, pipe e open. Sei così vicino al quarto tentativo:

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

Fortunatamente l'argomento -a consente a -f di prendere i dati da stdin ma non aprire in TextEdit.

    
risposta data 12.05.2018 - 04:48
fonte
1

Puoi aprire un PDF come variabile di Bash (espresso come percorso per il file) come questo.

  1. Imposta la tua variabile:

    pdf=/path/to/44592-linux-restricted-shell-bypass-guide.pdf
    
  2. Apri il file in questo modo:

    open "$pdf" -a Preview
    

Tuttavia, il tuo esempio indica che il file non esiste sul tuo filesystem. Se vuoi aprire un flusso di dati non elaborato memorizzato in una variabile, ti consiglio di echeggiare la tua variabile e collegarla a open utilizzando l'opzione -f come questa.

  1. Definisci la tua variabile:

    pdf=$(wget -qO- https://www.exploit-db.com/docs/english/44592-linux-restricted-shell-bypass-guide.pdf)
    
  2. Apri i dati grezzi come stream dallo standard input:

    echo $pdf | open -f -a Preview
    

Spiegazione: Se memorizzi l'output di wget -qO- … come variabile, invece di scaricare il file sul tuo filesystem, open non saprà cosa fare mentre stai passando i dati del file raw piuttosto che il percorso del file . In man open 'file' si riferisce a un file apribile per l'applicazione data, la variabile nell'esempio non è quella. L'opzione -f è utile in questo scenario poiché il tuo metodo di impostazione della variabile prevede la memorizzazione dell'intero flusso di file, che non verrà interpretato come un file da open , e quindi può essere aperto solo come flusso di file.

    
risposta data 12.05.2018 - 05:23
fonte

Leggi altre domande sui tag