dica: Criar item no menu do Linux que abre um terminal executando comandos

Caso:

Possuo alguns programas que criei (perl, python e outros em bash) que precisam ser executados em terminal (obvio não?), porém para organizá-los eu prefiro criar entrada no menu principal e separá-los em submenus (por ordem lógica). Porém, se você apenas inseri ele no menu (chamando o executável do script), ele vai abrir um terminal, executá-lo e depois fechar o terminal (normalmente ele vai piscar o terminal na sua tela), ou vai fechar logo que você sair de sua aplicação.

Exemplo: Se você criar uma entrada no menu (gnome/mate/xfce...) para abrir um terminal e mostrar uma query de SQL (relatório por exemplo), ele vai piscar o terminal, sem chances de ver o conteúdo (abre, executa e fecha).

Exemplo 2: Criar uma entrada no menu para chamar um programa de monitoramento, como o htop, top ou o glances. Ao criar a entrada no menu e depois executar, ele abre o terminal e executa o programa, mas ao sair do glances/top/htop (com a letra "Q") ele sai do programa e fecha o terminal.

Exemplo 3: Criar uma entrada que execute uma aplicação gráfica, mas faça isto pelo terminal para abrir um debug.



Solução:

Abaixo, como criar item no menu do Linux que abra um comando executando em terminal (e manter o terminal aberto).


O código completo:

Com o gnome-terminal:

gnome-terminal -x bash -c "comandoouarquivo.sh ; bash"

mate-terminal

mate-terminal -x bash -c "comando_ou_arquivo.sh ; bash"

xterm:

xterm -e bash -c "comando_ou_arquivo.sh ; bash"
xfce4-terminal

xfce4-terminal -e ' bash -c "glances ; bash" '

lxterminal:

lxterminal -e " bash -c ' glances ; bash ' "
 

Nos terminais xfce4, lx e xterm:
"-e STRING" ou "--command=STRING" ou "--command STRING"


O -e serve para indicar um comando a ser executado (ou um script), pode-se usar "--command" (com "=" ou espaço depois) ao invés de "-e"

Nos terminais gnome e mate, não há o "-e", isto é feito pelo "-x", eles aceitam o "--command", então caso queira criar um script mais autônomo e automático, pode deixar tudo com o --command e buscar o terminal que o usuário possue em seu linux através de variavel.

O porém no gnome-terminal e no mate-terminal é que neles você não deve colocar as aspas simples com as duplas (não vai funcionar igual aos outros terminais). Apenas use aspas após o "-c" do bash para informar o que deve ser executado dentro do bash ao abrir o terminal.


gnome-terminal / mate-terminal:
-x, --execute command

O "-c" é uma opção do bash informando que a string a seguir será executada como comando/parâmetro dentro do bash.



Exemplo da screenshot:
gnome-terminal -x bash -c "glances; bash"

Outro exemplo:
mate-terminal -x bash -c "/opt/relthck.sh ; bash"



Dica 2:
Pelo gerenciador de menu, você pode organizar os itens por submenus (ex: em network, eu tenho alguns submenus como sniffers, scanners), além de poder colocar ícones para cada entrada e a descrição. Com a entrada criada, você pode colocar atalhos na área de trabalho e no painel (barra do sistema).

Com esta dica é possível criar os menus semelhantes aos que tem em distribuições como backtrack, kali, backbox, entre outras distros que possuem como base a disposição de aplicações que são somente executadas em modo terminal...



Criação de uma entrada no menu do gnome ou mate:
("Alacarte" no gnome e "mozo" no mate).







Mais vistos no mês:

As melhores distribuições Linux para 2017

Teste de Performance de Rede com Iperf

TuxMath - Tux, do Comando da Matemática. Ensino e diversão a crianças.

Aula #14 - Os sistemas de arquivos ext2/ext3/ext4

Modelo Firewall Completo em Iptables para pequena rede/office

DHCP - Guia Completo

OPNsense - Firewall Open Source

SSD no linux

Administração de sistema e Deploys: Ansible, Chef, Fabric, Puppet ou Salt?

Oracle Linux 7.0 Server com Xfce - Instalação e configurações iniciais