Como executar comandos de um arquivo bash da maneira como eles são executados a partir do terminal?

1

Desculpe pela minha pergunta provavelmente muito ingênua.

O que quero dizer é: como criar um script / arquivo bash executável que executaria comandos mais complexos, comandos que normalmente devem ser colocados em um terminal?

Especificamente, estou me referindo aos seguintes comandos:

  • Aprendi sobre isso em aqui :
DRI_PRIME=1 glxgears -info

Isso iniciaria glxgears e colocaria em funcionamento o cartão discreto da ATI. Então eu posso monitorar sua temperatura etc. Mas quando eu corro do terminal, eu entendo isso:

Enquanto eu corro com o script

#!/bin/bash

DRI_PRIME=1 glxgears -info

apenas a janela das engrenagens é visível, não a outra com texto.

Eu gostaria de poder usar um arquivo bash e ter o primeiro resultado, e então executar o arquivo a partir de um lançador.

Considerando esta página em aria2 e webgui-aria2 , aria2 é iniciado nesse contexto executando no terminal um comando longo:

touch /path/to/download/folder/session.txt && aria2c --enable-rpc --rpc-listen-all --save-session=/path/to/download/folder/session.txt --input-file=/path/to/download/folder/session.txt -x16 -s16 -k1M --dir=/path/to/download/folder

Como rodar isso com um script (que eu então executaria de um lançador) e ter o mesmo resultado, a mesma informação?

Um script assim (adaptado à minha pasta de download)

#!/bin/bash

touch /home/cip/Downloads/aria2/session.txt && aria2c --enable-rpc --rpc-listen-all --save-session=/home/cip/Downloads/aria2/session.txt --input-file=/home/cip/Downloads/aria2/session.txt -x16 -s16 -k1M --dir=/home/cip/Downloads/aria2

não dá nada, enquanto os programas começam.

(Eu estou no Xubuntu 14.04).

    
por cipricus 16.10.2014 / 00:18

2 respostas

2

Considere este script (salvo como /home/muru/test.sh ):

#! /bin/bash
DRI_PRIME=1 glxgears -info

Um lançador básico para isso seria parecido com (digamos, salve-o como /home/muru/test.desktop ):

[Desktop Entry]
Type=Application
Terminal=true
Name=glx-gears-info
Exec=/home/muru/test.sh

Torne-os executáveis:

chmod +x test.sh test.desktop

Agora você deve ter estas duas entradas em sua pasta pessoal:

Observe como o nome é glx-gears-info , mesmo que o nome do arquivo do iniciador seja test.desktop . Você pode clicar duas vezes nele para iniciar o script:

Para um script como (digamos, localizado em /home/muru/start-aria.sh ):

#!/bin/bash
touch /home/cip/Downloads/aria2/session.txt && \
    aria2c --enable-rpc --rpc-listen-all \
       --save-session=/home/cip/Downloads/aria2/session.txt \
       --input-file=/home/cip/Downloads/aria2/session.txt -x16 -s16 -k1M \
       --dir=/home/cip/Downloads/aria2

(divido o comando em várias linhas para facilitar a leitura) o arquivo do iniciador seria semelhante (digamos, /home/muru/start-aria.desktop ):

[Desktop Entry]
Type=Application
Terminal=false
Name=Start Aria2
Exec=/home/muru/start-aria.sh

Você pode definir Terminal=false aqui, pois este comando provavelmente não precisa de um terminal.

Para obter a janela do terminal ao usar os iniciadores do Xfce, marque 'Executar no Terminal'.

Um segundo comando, que fecha aria2, pode ser adicionado no mesmo lançador do Xfce: pkill aria2c

Além disso:

  • adicionando-os em um único lançador,

  • definindo propriedades avançadas, como na imagem abaixo

(ou seja, "mostrar último item usado" e "botão interno"),

  • e adicionando dois ícones específicos,

o lançador sempre exibirá o status atual de aria2: executando ou fechado .

    
por muru 16.10.2014 / 01:01
1

Resposta rápida, tente isto:

#!/bin/bash
DRI_PRIME=1
xfce4-terminal --window -H -x glxgears -info

Não sei se todos os switches são necessários, mas funcionou.

    
por user7134 16.10.2014 / 00:46