Abra o arquivo com o programa padrão e aguarde até que o aplicativo seja encerrado [fechado]

2

Eu quero abrir um arquivo de texto a partir da linha de comando com o aplicativo padrão. Durante esse tempo, o aplicativo padrão é aberto, o terminal deve ser desativado (não é possível executar outro comando). Por exemplo, eu uso o KDE e o leitor .txt padrão é o Kate, então eu quero executar kate test.txt e o terminal está desativado até eu terminar o Kate.

O que eu quero?

  • executa um comando que inicia o editor de texto padrão
  • enquanto isso o programa c ++ está esperando naquele ponto específico que executa o comando descrito acima
  • quando o usuário está pronto, salva o documento, sai do editor de texto padrão (termina) e a execução do programa c ++ continua
por Blake 08.02.2014 / 17:55

1 resposta

5

O editor de texto padrão em um sistema geralmente é armazenado na variável $EDITOR environmental. Por exemplo, no meu sistema eu tenho:

$ echo $EDITOR
/usr/bin/emacs

Então, você pode simplesmente executar

$ $EDITOR test.txt

NOTA: Este não é necessariamente o mesmo editor definido nas configurações do ambiente gráfico. Use o método abaixo para obter isso.

Como alternativa, se o sistema estiver configurado para usá-lo, você poderá iniciar o programa padrão associado a um tipo MIME com xdg-open ( open no OSX):

$ xdg-open test.txt

Mas isso não manterá o terminal até que o comando seja fechado. No entanto, você pode usar a configuração do mime para descobrir qual programa seria aberto e, em seguida, chamar o programa por conta própria. Para fazer isso, obtenha o programa associado ao tipo de texto mime:

$ xdg-mime query default text/plain
pluma.desktop;sublime_text.desktop

Então, agora você pode analisar essa linha para obter o nome do programa:

editor=$(xdg-mime query default text/plain | sed 's/\..*//')
$editor test.txt

NOTA: Isso pressupõe que o arquivo .desktop tenha o nome do executável real. Uma maneira mais segura seria localizar o próprio arquivo da área de trabalho e fazer o grep do executável. Em seguida, inicie o programa que você encontrou. Você pode fazer tudo com este comando:

editor=$(grep -i ^exec $(locate -n 1 $(xdg-mime query default text/plain |
                        cut -d';' -f 1)) | 
           perl -pe 's/.*=(\S+).*/$1/') 
$editor test.txt
    
por 08.02.2014 / 19:32