Come posso completare automaticamente il nome di un file in Linux quando si passa il flag remoto a Firefox?


1

Sto tentando di aprire un file utilizzando Firefox tramite la riga di comando. Il comando che eseguo è;

firefox -remote "openurl(file://`pwd`/filename.html)"

Vorrei essere in grado di completare automaticamente il nome del file che a volte può essere lungo premendo la scheda.


La ragione per cui non funziona sono le doppie virgolette!
FSMaxB,

Risposte:


1

Bene, è goffo, ma potresti scrivere

sh -c 'firefox -remote "openurl(file://`pwd`/$1)"'  -  PeaTab

o

sh -c 'firefox -remote "openurl(file://$1/$2)"'  -  `pwd`  PeaTab

Se lo farai su base regolare (senza molte variazioni), potresti volerlo inserire in uno script.

PS Potresti lasciare una delle barre dopo il file:perché pwdne fornirà una.


Modificare:

Come / perché funziona?

La shell interattiva che stai eseguendo (supponiamo che sia bashe si riferisca ad essa come tale, per chiarimento delle ambiguità) è quella che legge l'input della tua riga di comando e fa cose come il completamento automatico, e richiede che qualsiasi parola della riga di comando che i completamenti automatici devono apparire come un nome file o percorso. Ho avuto l'esperienza che può gestire

       ... $PWD/ScoTab

e

       ... `pwd`/ScoTab

ma no

       ... $(pwd)/ScoTab

Vai a capire. YMMV. In ogni caso, non può gestire

... "openurl(file://`pwd`/ScoTab

perché ciò non può essere interpretato come un nome file o nome percorso (a meno bashche non possa analizzare la "openurl(… chiamata, cosa che non può).

Il trucco è farlo eseguire il completamento automatico su un nome file isolato e quindi incollare i pezzi insieme. L'unico modo per impostare $1, $2ecc., Per la tua shell interattiva è digitare un comando come set foo baro set -- foo bar, e questo generalmente non viene fatto. Abbiamo bisogno di una shsulla riga di comando in modo che possiamo impostare il suo  $1, $2e così via, mettendo i valori sulla sua linea di comando. Quindi usiamo il bashper eseguire il completamento automatico, che fornisce i parametri della riga di comando a sh, e quindi usiamo il shcomando

'firefox -remote "openurl(file://$1/$2)"'

interpretare $1e $2, quindi "incollare i pezzi insieme".


Il processo di scrittura di questo mi ha fatto realizzare un'altra opzione:

set  `pwd`  ScoTab(esegui il completamento automatico) Enter

seguito da

firefox -remote "openurl(file:/$1/$2)" Enter

Come ho indicato in precedenza, il primo comando sopra imposta i parametri posizionali ( $1e $2) per la shell interattiva ( bash) e la seconda riga li usa. Come ho già detto, le persone in genere non impostano i parametri posizionali della loro shell interattiva, ma non c'è nulla di sbagliato in questo - è semplicemente insolito. Va notato che $1e $2manterrà questi valori fino a quando non li ripristini o non ti disconnetti.

Dovresti essere in grado di combinare le due righe sopra in una:

set `pwd` ScoTab(esegui il completamento automatico) ; firefox -remote "openurl(file:/$1/$2)" Enter


Perché devo eseguire il shcomando?
PeanutsMonkey

Perché la shell interattiva che stai eseguendo (supponiamo che sia bashe ci riferiamo ad essa in quanto tale, per disambiguazione) è quella che legge l'input della riga di comando e fa cose come il completamento automatico, e richiede che qualsiasi parola della riga di comando che si completa automaticamente come un nome file o percorso. Non so a mano se può gestire `pwd`/Pea(Tab), ma, come hai scoperto, non può certamente gestire "openurl(file://`pwd`/Pea(Tab).
Scott,

Il trucco è farlo eseguire il completamento automatico su un nome file isolato e quindi incollare i pezzi insieme. L'unico modo per impostare $1, $2ecc., Per la shell interattiva è digitare un comando come set foo baro set -- foo bar. Abbiamo bisogno di una shsulla riga di comando in modo che possiamo impostare il suo $1, $2e così via, mettendo i valori sulla sua linea di comando. Quindi usiamo il bashper eseguire il completamento automatico, che fornisce un parametro della riga di comando a sh, e quindi usiamo il shcomando 'firefox -remote "openurl(file://$1/$2)"'per interpretare $1e $2, quindi "incolliamo i pezzi insieme".
Scott,

@PeanutsMonkey: ho aggiornato la mia risposta.
Scott,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.