Esiste un comando "Apri con" per la riga di comando?


24

La riga di comando ha un modo per ottenere un elenco consigliato di programmi utilizzati per aprire un determinato file, in base al tipo di file? Ad esempio, un .pdffile dovrebbe avere una open with...raccomandazione usando i programmi Evincee Document Viewer.

Uso la riga di comando per la maggior parte delle cose, ma a volte dimentico il nome di un programma che voglio usare per aprire un particolare tipo di file.

A proposito sto usando Ubuntu 13.10.

pro-tip

Grazie alla risposta selezionata di @slm di seguito, ho creato il seguente script bash in un file chiamato openwith.sh:

xdg-mime query default $(xdg-mime query filetype $1)

Aggiungi come alias o esegui direttamente come openwithcomando.


1
Puoi provare con gnome-open file. Ho aggiunto alias o='gnome-open'al mio .bashrcper semplicità.
Pål GD,

gnome-openfunziona in modo simile a xdg-open.
slm

Apparentemente, anche così gvfs-open. Domanda Cosa posso usare invece di gnome-open? da chiedere a Ubuntu .
Pål GD,

Risposte:


33

Non c'è mai stato un comando che abbia mai visto che funga da "apri con ..." ma puoi usare il comando xdg-open <file>per aprire un dato <file>nell'applicazione associato a quel particolare tipo di file.

Esempi

Apertura di un file di testo:

$ xdg-open tstfile.txt
$

Con conseguente tstfile.txtapertura del file in gedit:

                         ss di gedit

Aprire un documento di LibreOffice Writer:

$ xdg-open tstfile.odt 
$

Con conseguente tstfile.odtapertura del file in Writer:

                         ss dello scrittore

Quali app vengono utilizzate?

È possibile utilizzare xdg-mimeper interrogare il sistema per scoprire quali applicazioni sono associate a un determinato tipo di file.

$ xdg-mime query default $(xdg-mime query filetype tstfile.txt)
gedit.desktop calibre-ebook-viewer.desktop

$ xdg-mime query default $(xdg-mime query filetype tstfile.odt)
libreoffice-writer.desktop calibre-ebook-viewer.desktop

Questa è un'operazione in 2 passaggi. Per prima cosa chiedo il tipo mime di un determinato file xdg-mime query filetype tstfile.txt, che tornerà text/plain. Questo viene quindi utilizzato per eseguire un'altra ricerca per scoprire l'elenco delle applicazioni associate a questo tipo MIME. Come puoi vedere sopra ho 2 app associate gedite calibre, per i .txtfile.

Puoi usare anche xdg-mimeper cambiare le associazioni. Vedi man xdg-mimeper maggiori dettagli.


C'è un modo per visualizzare altri tipi di programmi oltre a quelli predefiniti? Ad esempio, ho appena installato okularper visualizzare i PDF, ma il tuo esempio sopra mostra solo evincequando lo eseguo su un file .pdf.
modulitos,

1
@Lucas: sì, gli esempi che ho mostrato mostrano le applicazioni associate a un determinato tipo di file sopra. Per es. i file di tipo .txtsono associati ad esempio a gedit e calibre.
slm

Devo avere dei .desktopfile per i programmi che voglio elencati? Ad esempio, quando eseguo lo script su un .pdffile, questo ritorna evince.desktop, anche se posso anche eseguirlo okular.
Modulitos,

@Lucas: probabilmente è meglio chiederlo come una nuova Q, poiché ora ci stiamo allontanando dalla Q originale.
slm

5

Se lavori principalmente dalla riga di comando, puoi guardare un file manager basato su curses, come ranger o vifm . Entrambi consentono di definire azioni predefinite per i tipi di file.

In vifm, ad esempio, ~/.vifm/vifmrcpuoi definire associazioni in questo modo:

" Images
filetype *.jpg,*.jpeg,*.gif,*.tif,*.png,*.bmp sxiv 

" Media
filetype *.flv,*.avi,*.mp4,*.mpeg,*.mpg,*.mov,*.ogg,*.ogv,*.mkv mpv 

" Web
filetype *.html,*.htm,*.shtml /home/jason/Scripts/vimprobtab.sh 

" PDF
filetype *.pdf apvlv

Colpire Entercon il cursore su qualsiasi file con una delle azioni definite lo vedrà aperto dalla relativa applicazione. Come puoi vedere nel caso dei .htmlfile, puoi attivare uno script e un'applicazione.


5

Sorta di, ma di conseguenza cambierà l'applicazione predefinita. Non sono sicuro su quali altri sistemi operativi funzionino, ma le istruzioni seguenti funzionano per Ubuntu 12.04 - Desktop X86-64. Non avevo file PDF a portata di mano, quindi ho provato con un archivio .zip.

Passaggi generali

Passo 1

In un tipo di terminale:

$ mimeopen -d /home/username/example.zip
screenshot # 1 = https://copy.com/qfWSZaZ4FzlA

    ss # 1

Passo 2

Scegliere dall'elenco immettendo #l'applicazione desiderata e premendo enter. Il file si aprirà immediatamente nell'applicazione scelta.

screenshot # 2 = https://copy.com/um6Rf7zRdceT

    ss # 2

screenshot # 3 = https://copy.com/ytwKCqR6nv8i

    ss # 3

Gli appunti

Nota 1

Ciò modifica l'applicazione predefinita in quella scelta, e quindi ogni volta che si apre quel tipo di file, si aprirà ora in qualsiasi applicazione scelta per ultima dall'elenco.


Intendevi mettere un segno cancelletto (#) nell'URL per lo screenshot 3?
trysis,

@trysis L'ho appena usato per bypassare il limite massimo di 2 URL.
favore, cancellami il

Oh, ha senso. Sembra comunque strano, però.
trysis,

Ti ho ripulito A e ti ho aggiunto il terzo URL.
slm

2

Dipende dal sapore di Unix che stai usando, immagino. In OS X, puoi usare il opencomando:

OPEN(1)                   BSD General Commands Manual                  OPEN(1)

NAME
     open -- open files and directories

SYNOPSIS
     open [-e] [-t] [-f] [-F] [-W] [-R] [-n] [-g] [-h] [-b bundle_identifier]
          [-a application] file ... [--args arg1 ...]

DESCRIPTION
     The open command opens a file (or a directory or URL), just as if you had
     double-clicked the file's icon. If no application name is specified, the
     default application as determined via LaunchServices is used to open the
     specified files.

     If the file is in the form of a URL, the file will be opened as a URL.

...

Inoltre, il opencomando è apparso per la prima volta in NextStep ed è stato ereditato da OS X, quindi potrebbe essere disponibile in qualche forma su altre piattaforme più o meno basate su OpenStep (ad esempio AfterStep, LiteStep).
Ionoclast Brigham,
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.