Come posso aprire più URL in una nuova finestra di Chrome dal terminale

1

Posso aprire più URL nella finestra corrente di Chrome dal terminale:

open https://www.apple.com/ https://www.apple.com/ https://www.amazon.com/

Quando ho provato ad aprirli in una nuova finestra usando

open -n https://www.apple.com/ https://www.apple.com/ https://www.amazon.com/

Chrome risponde solo con una nuova finestra vuota.

Come posso aprire tutti gli URL in una nuova finestra?

    
posta JawSaw 23.11.2017 - 05:23
fonte

1 risposta

1

La soluzione pigra

Usa AppleScript per creare la nuova finestra, quindi usa open senza -n :

osascript -e 'tell app id "com.google.chrome" to make new window' \
  && open https://www.apple.com/ https://www.apple.com/ https://www.amazon.com/

Non appena la finestra è aperta, è probabile che Chrome lo utilizzi per tutti gli URL. Tuttavia, questa soluzione è incline alle condizioni di gara, , soprattutto se viene creata o attivata un'altra finestra mentre il comando è in esecuzione. 1

[1] In pratica, ci sono diversi scenari in cui ciò può accadere, e. g. se esegui il comando in parallelo o se Chrome tenta di ripristinare le finestre dopo un arresto anomalo o quando l'utente (o un altro programma) tenta di aprire una nuova finestra, ecc.

La soluzione più robusta

Un'alternativa più robusta, che non ha la condizione di competizione di cui sopra, è la seguente soluzione AppleScript:

#!/usr/bin/osascript
on run(theUrls)
    tell app id "com.google.chrome" to tell make new window
            repeat with theUrl in theUrls
                set newTab to make new tab with properties { url: theUrl }
            end repeat
            tell tab 1 to close
    end tell
end run

Salva quel codice, preferibilmente come un file senza estensione (per esempio open_new_window ). Metti quel file da qualche parte nel tuo PATH . Assicurati di chmod 755 lo script in modo che sia eseguibile. Per buona misura, consiglierei anche a sudo chmod root:wheel it.

Da ora in poi, puoi richiamare lo script in questo modo:

open_new_window https://www.apple.com/ https://www.apple.com/ https://www.amazon.com/

Nel caso in cui non desideri utilizzare uno script separato

Utilizza la seguente variante per il test o se preferisci una riga di comando senza uno script separato:

osascript \
  -e 'on run(theUrls)' \
  -e '  tell app id "com.google.chrome" to tell make new window' \
  -e '    repeat with theUrl in theUrls' \
  -e '      set newTab to make new tab ¬' \
  -e '        with properties { url: theUrl }' \
  -e '    end repeat' \
  -e '    tell tab 1 to close' \
  -e '  end tell' \
  -e 'end run' \
  https://www.apple.com/ https://www.apple.com/ https://www.amazon.com/
    
risposta data 23.11.2017 - 10:09
fonte

Leggi altre domande sui tag