Como eu abro um arquivo dentro de um script bash?

20

Ok, então executar gedit myfile.txt funciona bem. Mas o que acontece com a abertura de um arquivo de dentro de um script bash, usando o aplicativo de desktop padrão vinculado ao tipo de arquivo?

Eu tentei abaixo, o que funciona muito bem quando executado manualmente no terminal, mas quando eu o coloco em um arquivo bash, nada acontece:

#!/bin/bash
xdg-open "myfile.txt"&

O que devo fazer em vez disso?

Por favor, note que eu preciso que o arquivo permaneça aberto após o terminal ser fechado também.

    
por Industrial 16.01.2012 / 11:58

6 respostas

15

Eu acho que seu roteiro deve funcionar. Mas você pode adicionar algo a ele para obter um pouco mais de informações:

#!/bin/bash
T='xdg-mime query filetype '
echo "opening file "    " of type " $T "with " 'xdg-mime query default $T'
xdg-open 
echo "finished script"

ao executar este script (chamado my_open.sh) em um terminal como este:

my_open.sh path/to/somefile.txt

Eu recebo a seguinte saída:

opening file  path/to/somefile.txt  of type  text/plain with  gedit.desktop
finished script

que me diz que o caminho para o arquivo está ok, o tipo MIME é reconhecido e o arquivo desktop que é usado para abrir o arquivo também está ok. E o gedit abre com o arquivo em questão.

Agora, quando for executado em outro arquivo:

my_open.sh path/to/README

Eu recebo a seguinte saída:

opening file  path/to/README  of type  text/x-readme with
finished script

Observe o tipo diferente de mimet e o arquivo da área de trabalho ausente. No entanto, o xdg-open abre o padrão para todos os arquivos de texto (gedit).

Então, você pode querer adicionar algo assim ao seu script e ver se obtém resultados inesperados (que você pode adicionar à sua pergunta ...).

    
por xubuntix 21.01.2012 / 11:55
3

Faça um script bash test.sh como:

#!/bin/bash
gedit myfile.txt

Em seguida, torne o script executável como:

chmod +x test.sh

Por fim, execute o script como:

./test.sh
    
por Undefined 18.01.2012 / 11:47
3

Talvez gnome-open em vez de xdg-open

    
por Denis 22.01.2012 / 01:03
2

Você está indo na direção correta. Se você quiser que o aplicativo gui permaneça aberto quando você fechar a janela do terminal, basta adicionar um nohup no início da linha.

#!/bin/bash
nohup xdg-open "myfile.txt"&

Se o aplicativo GUI não estiver abrindo provavelmente porque você não tem a variável de ambiente DISPLAY definida no shell do qual você está tentando iniciá-lo. Tente fazer um eco $DISPLAY

    
por Mark 20.01.2012 / 18:35
0

A primeira parte da sua pergunta

com o comando cat você pode abrir um arquivo dentro do terminal, se é isso que você quer (é indicado na primeira parte da sua pergunta).

para usá-lo, basta digitar cat FILENAME .

Outras informações

Se você precisar de mais comandos: Aqui está uma boa lista de comandos.

Editor padrão do GNOME

Se você deseja abrir o arquivo no aplicativo padrão do GNOME, gedit .

para usá-lo, basta digitar gedit FILENAME

    
por Alvar 20.01.2012 / 13:51
0

Embora eu não tenha certeza do que realmente deve ser feito aqui & amp; Com base em alguns comentários recentes, um único script deve abrir QUALQUER arquivo no aplicativo padrão ou, até certo ponto, o aplicativo suporta isso.

Se assim for , a maneira mais fácil de fazer isso seria abrindo um terminal & amp; indo scriptname / caminho / para / nome do arquivo ou se houver algum espaço no caminho, em seguida, scriptname '/ path / to / filename'

cd; mkdir -p bin && gedit ~/bin/openit1

Use isso como um script, você pode usar qualquer nome que desejar para o script, eu usarei o openit1 como exemplo. É melhor usar scripts diretamente de ~ / bin para adicionar um número para nomear, assim não há conflitos com nenhum comando linux existente

#!/bin/bash
xdg-open ""

Feche o gedit & amp; no terminal

chmod u+x ~/bin/openit1

Reinicie para adicionar ~ / bin ao seu $ PATH

Para invocar abrir um terminal e ir

openit1 /path/to/filename or openit1 'path/to/filename' 

SE como orig declarado & amp; usando o orig. script para um arquivo específico por script & amp; invocando por d. clicando com o botão esquerdo no script, basta selecionar " Executar " em vez de "Executar no terminal"

    
por doug 21.01.2012 / 21:19

Tags