Por que não consigo executar este comando no meu terminal:
open index.html
Não era para abrir esse arquivo no meu navegador? Também não pode executar este comando: open index.html -a "Sublime Text"
. O resultado desses comandos são:
$ open index.html
Couldn't get a file descriptor referring to the console
$ open index.html -a "Sublime Text" -
open: invalid option -- 'a'
Usage: open [OPTIONS] -- command
command-line
file-opening
Edgar Oliveira
fonte
fonte
xdg-open
qual deve abrir o arquivo no seu navegador. Oopen
comando é um link para oopenvt
comando e abre um binário em um novo console virtual. Aparentemente, não é isso que você deseja.open
comando no Linux.open
comando no Linux, vinculado aopenvt
; as mensagens de erro na pergunta são consistentes com essa situação.xdg-open <file>
e ele deverá abrir o arquivo com o programa correspondente.Respostas:
O objetivo principal do
open
comando do OS X é abrir um arquivo no aplicativo associado. O equivalente a isso em unidades modernas não OSX éxdg-open
.xdg-open
não possui um equivalente de OSXopen -a
para abrir um arquivo em um aplicativo específico. Isso ocorre porque a maneira normal de abrir um arquivo em um aplicativo é simplesmente digitar o nome do aplicativo seguido pelo nome do arquivo. Mais precisamente, você precisa digitar o nome do programa executável que implementa o aplicativo.O Linux, como outros sistemas Unix (mas, até onde eu sei, as partes não-Unixy do OS X), gerencia o software rastreando-o com um gerenciador de pacotes e coloca arquivos individuais onde são usados . Por exemplo, todos os programas executáveis estão em um pequeno conjunto de diretórios e todos esses diretórios estão listados na
PATH
variável ; runningsublime_text
procura um arquivo chamadosublime_text
nos diretórios listados emPATH
. O OS X precisa de um nível extra de indireção,open -a
para lidar com aplicativos que são descompactados em uma única árvore de diretórios e registrados em um banco de dados de aplicativos. O Linux não possui nenhum banco de dados de aplicativos, mas é organizado de tal maneira que não precisa de um.Se a execução do
sublime_text
shell de comando não funcionar, o Sublime Text não foi instalado corretamente. Eu nunca o usei e, aparentemente, vem como um arquivo tar, não como um pacote de distribuição (por exemplo, deb ou rpm), portanto é possível que você precise executar uma etapa extra de instalação. É realmente o trabalho dos criadores do Sublime Text tornar isso automático, mas se eles não o fizeram, provavelmente você pode fazê-lo executando o comandoSubstitua
…
pelo caminho em que osublime_text
executável está, é claro.O
open
comando que você encontrou é um nome mais antigo para oopenvt
comando (algumas distribuições Linux o incluem apenas sob o nomeopenvt
). Oopenvt
comando cria um novo console virtual , que pode ser feito apenas pela raiz e não é usado com muita frequência neste século, já que a maioria das pessoas só trabalha em um ambiente de janela gráfica.fonte
Você não menciona o sistema operacional que está usando.
Em algumas distribuições Linux, o
open
comando é um link simbólico para oopenvt
comando que abre um binário em um novo console virtual. Aparentemente, não é isso que você deseja. Suas mensagens de erro realmente indicam que você chamou oopenvt
comando. Este comando espera um programa binário (um executável) como argumento.Suponho que você queira dizer
xdg-open
que, em contraste comopenvt
, não espera um executável como argumento, mas um arquivo que está associado a um programa e abre o arquivo com o programa. Você pode transmitir arquivos e URLs como argumentos.Portanto,
xdg-open index.html
deve abrir o arquivo no seu navegador,xdg-open image.png
deve abrir o arquivo no visualizador de imagens, etc.fonte
xdg-open
chamada é chamar o aplicativo padrão para esse arquivo. Se você quiser usar um programa diferente, basta ligar<program> <file>
. Não consigo ver o problema.open index.html -a "Sublime Text" -
É por isso que digo "problema", porque se você costumaxdg-open
abrir um arquivo html, há grandes chances de que o arquivo seja aberto pelo navegador e não por um editor de texto como "Sublime Text"Embora muitas vezes as pessoas
xdg-open
citem como emulando a funcionalidadeopen
, o macOSopen
é um pouco diferente porque 1. não redireciona nada do stdout / stedrr e 2. desanexa o que você deseja executar do terminal (que é quase sempre o que você deseja ao iniciar a GUI aplicativos para que você não tenha terminais por aí)Para resolver isso, criei um equivalente adequado usando algumas ferramentas GNU padrão (a sintaxe é fish shell, mas a conversão para o bash é trivial):
Adicionado :
Para aqueles que usam o shell bash, aqui está a função:
fonte
Minha solução (usada diariamente) é usar um
alias
paraxdg-open
.Basta colocar isso no seu
~/.bashrc
:Então feche e reinicie seu shell ou
source ~/.bashrc
.Agora você pode abrir qualquer arquivo com esse comando ... de .png a .jpg a .docx a .pdf a .txt.
fonte