Linux equivalente ao comando “open” do Mac OS X [fechado]

214

Eu achei o comando "aberto" no Mac OS X muito útil na linha de comando. De "homem aberto":

O opencomando abre um arquivo (ou um diretório ou URL), como se você tivesse clicado duas vezes no ícone do arquivo. Se nenhum nome de aplicativo for especificado, o aplicativo padrão, conforme determinado via LaunchServices, será usado para abrir os arquivos especificados.

Ou seja, se eu quiser abrir um arquivo PDF com o visualizador de PDF padrão (por acaso é Visualização), só preciso fazer:

open my.pdf

No Linux, no entanto, para abrir um arquivo PDF a partir da linha de comando, tive que procurar um localizador de PDF padrão, por exemplo, "evince" (quem teria adivinhado?) E, em seguida,

evince my.pdf

Então, existe um equivalente simples do comando 'open' na linha de comando do Linux?

Obrigado!

Joachim Sauer
fonte
6
Talvez essa pergunta deva ser transferida para superuser.com?
quazgar
1
Superusuário parece inadequado - existe um StackOverflow para "usuários comuns" ou possivelmente "programadores que desejam criar scripts para outros aplicativos", ou seja, automatizar?
Krazy Glew
askubuntu pode caber.
Gopherkhan

Respostas:

238

Você poderia tentar xdg-open , a maioria das distribuições Linux possui. Ele abrirá o aplicativo associado padrão para o seu arquivo.

FYI https://portland.freedesktop.org/doc/xdg-open.html

número 5
fonte
13
Uma grande diferença entre isso e open, no entanto, é que isso não abre o arquivo / aplicativo em segundo plano. Os aplicativos Linux parecem muito faladores e geralmente emitem várias linhas de diagnóstico e avisos diretamente no seu terminal (mesmo que nada tenha dado errado). Eu geralmente tenho que fazer algo parecido xdg-open <file> &> /dev/null &. Existe algo melhor que o xdg-open a esse respeito?
Suan
13
@Suan: Ele abre o aplicativo em "plano de fundo", desconectado do terminal, de forma que você possa continuar trabalhando no terminal assim que o aplicativo for iniciado. Portanto, a trilha &não é necessária. Quanto às "múltiplas linhas de diagnóstico", essas são do próprio aplicativo, não do xdg-open. Se você não deseja nenhuma saída, você precisaria &> /dev/nullusar evincediretamente (exemplo do OP), para que sua reclamação seja anulada. xdg-opené realmente o caminho a percorrer.
MestreLion 11/09/12
15
@MestreLion Não acho que a queixa seja totalmente nula, pois a abertura do Mac não resulta na saída do aplicativo ecoando no terminal.
MaxNanasy #
7
@MaxNanasy: a saída é de aplicativos, não é xdg-openculpa se eles estão conversando. E suprimir essas mensagens deve ser uma escolha do usuário , não do xdg. Portanto, é uma reclamação vazia pedir algo "melhor" que xdg-open. Além disso, se o Mac opennão tiver opção para enviar essas mensagens, eu diria que isso opené muito pior do que xdg-open, já que quando você usa a linha de comando para iniciar arquivos, geralmente está interessado nessa saída (caso contrário, por que não clicar duas vezes no arquivo em um navegador como o Nautilus?)
MestreLion 16/11
12
@MestreLion Embora se possa argumentar que a reclamação é trivial, uma vez que alias open='xdg-open &>/dev/null'produz aproximadamente o comportamento desejado (embora os erros do xdg-open em si (em oposição ao programa iniciado) também sejam silenciados, o que é indesejável).
Max Nanasy
76

O equivalente que você está procurando é xdg-open, que pode ser usado da mesma maneira que o opencomando do OS X. Por exemplo:

xdg-open ~/Documents/Chubby_Bubbies.odt

No entanto, é realmente difícil digitar com rapidez e precisão. Em vez disso, você deve criar um alias para o xdg-open, o que torna o processo muito mais rápido.

Obviamente, você pode openusar o alias para torná-lo compatível com o OS X (você pode escolher o que quiser), mas pessoalmente, eu uso o colchete direito (] ) no meu atalho por motivos de velocidade. Para usar isso, adicione o seguinte ao seu .bashrcarquivo:

alias ']'='xdg-open'

Em seguida, para abrir qualquer recurso, use-o como qualquer um destes exemplos:

] www.google.com
] file.txt
] ~/Pictures
] ssh://myserver.local/home/jeremy

Além disso, isso permite abrir um navegador de arquivos (por exemplo, Nautilus) no diretório atual:

] .

Por experiência, descobri que os aliases de uma letra funcionam melhor para o atalho acima. Afinal, o objetivo é eficiência. E você pode voltar e criar o mesmo apelido no OS X - deixo isso como um exercício para o leitor. :-)

Jeremy Visser
fonte
26
Criei um alias de 'open' para 'xdg-open' para torná-lo consistente no Linux e no Mac.
21420 Adam Byrtek
Isso é bom, mas não ótimo, tentei abrir um arquivo .url e o abri no gedit.
sorin
18
@sorin Você está tentando fazer parecer que é minha culpa ?!
precisa
7
@sorin: xdg-openabre o aplicativo padrão do seu sistema para o arquivo. No seu caso, os .urlarquivos estão definidos para serem abertos no gedit. Se você quiser alterar isso, clique com o botão direito do mouse no arquivo no Nautilus e vá em Propriedades> Abrir com para alterar o aplicativo padrão e xdg-openfuncionará de acordo.
MestreLion 11/09/12
Aqui está uma lista que eu criei, basta copiar e colar e executar o comando na seção 'Completamente' no primeiro comentário.
ozanmuyes
14

Eu mesmo resolvi isso sozinho e pensei em escrever como o fiz, o que é especificamente relevante para o que Suan pediu. Essas etapas permitem que você digite "open" e não o seu terminal coberto por mensagens desnecessárias:

Criar um script chamado openno ~/bin, o conteúdo é apenas:

xdg-open "$1" &> /dev/null &

Salve e feche o script e digite "source .profile" (ou .bash_profile, se relevante). É assim que digitar "abrir música" abrirá sua pasta de músicas na GUI do nautilus e não deve inserir nada no seu terminal.

Anake
fonte
O que há com o apelido e a localização estranha? Basta ligar para o próprio script opene colocá-lo em seu PATH (geralmente em $HOME/bin/open)
tripleee
Na minha máquina (ubuntu 11.10), se você adicionar um script chamado 'open' ao seu caminho, e tentar fazer dessa maneira, ele será substituído por / bin / open. Portanto, não consigo encontrar uma maneira de fazer seu trabalho funcionar sem um pseudônimo.
Anake
O truque é ter seu próprio script em um diretório que vem mais cedo no seu PATHWindows /bin. Por convenção, se você o tiver, $HOME/binele será adicionado ao início do PATH, antes de qualquer diretório do sistema. Geralmente, isso é feito por você .profileou similar. Por exemplo, o padrão .profileno Ubuntu faz exatamente isso.
tripleee
2
Redirecionar a saída para /dev/nullé um pouco caprichoso; talvez você possa redirecionar a saída para $HOME/.xsession-errorsalgo assim, para que o diagnóstico não seja completamente perdido, caso você precise solucionar algum problema.
Tripleee
1
@efdee: citar corretamente todas as variáveis ​​é uma boa prática de programação e vital nos scripts do bash. Isso não tem nada a ver xdg-open, é um problema de shell.
MestreLion 11/09/12
11

Tradicionalmente, você pode usar o comando "ver". Que apenas usa run-mailcap. Isso funcionará sem o Gnome e o X etc.

man see
Ali Afshar
fonte
3
O problema é run-mailcap(e seus muitos aliases) usa um banco de dados de associação de aplicativo separado (e terrivelmente desatualizado). Por exemplo, no meu sistema, enquanto as .mp3músicas abrem corretamente no VLC, os .txtarquivos abrem em menos (em vez do gedit) e os .pdfarquivos simplesmente não conseguem abrir! (Erro: nenhuma regra "view" do mailcap foi encontrada para o tipo "application / pdf")
MestreLion
Como eu disse, isso depende de cada sistema. Poucos aplicativos se registram de uma maneira que os run-mailcapreconhece. xdg-openusa internamente gvfs-open(em sistemas Gnome como o Ubuntu), que por sua vez usa as especificações mime-database do xdg, usadas por muito mais aplicativos.
MestreLion 11/09/12
Abriu um PDF de mais de 50 páginas gimppara mim. Eu vou ficar com xdg-open.
user1717828
Abrindo arquivos txt em lessx''D
Timo
4

gnome-open

Ana Betts
fonte
7
gnome-aberto é agora obsoleta, e além disso já foi usado internamente pelo xdg-opense o usuário estava no Gnome (agora ele usa gvfs-open)
MestreLion
2

Se você definiu corretamente os mimos, pode usar mimeopen. Confira sua página de manual, pois possui algumas opções úteis.

stacksia
fonte
1
Seria bom se essa resposta fosse ampliada. Eu estaria interessado em ver como isso funciona
Magnus
-3

No ambiente do Gnome Desktop, eu uso o seguinte comando:

nautilus `pwd` &

Isso é semelhante a "aberto". comando no Mac

WonderLi
fonte
11
Esta resposta tem vários problemas: A) Abre o diretório atual, não o arquivo, conforme solicitado pelo usuário. B) você pode usar .em vez de " pwd" C), se você mudar pwdpara um arquivo, o usuário ainda precisa acertar ENTER após Nautilus abre D) Nautilus Abertura primeiro apenas para ele para abrir o arquivo é uma solução muito indireta.
MestreLion