é possível criar um comando shell definido pelo usuário semelhante a macro?

1

É possível executar um único comando abreviado que, por sua vez, inicia vários comandos para digitar mais?

por exemplo,

$ kontact & rekonq

quando passado para o meu terminal abre duas aplicações. Eu poderia criar um comando meu para incluir esta ação e encurtar o tempo necessário para realizá-la?

    
por Wolfgang Steele 10.04.2015 / 19:47

3 respostas

2

Acho que o que você está procurando é um script de shell. Um script de shell basicamente permite transformar qualquer coisa que você pode digitar no shell em um comando. Então, por exemplo, para executar esses dois programas a partir de um shell, você executaria:

$ kontact &
$ rekonq &

Para colocá-los em um shell script, abra um novo arquivo em um editor de texto e insira as seguintes linhas:

#!/bin/bash
kontact &
rekonq &

Você notará que é muito parecido com o que você digitou no shell - a única diferença é que #!/bin/bash line up (que o site prestou de maneira útil em uma cor diferente para nós). Essa linha diz ao sistema que este é um script que deve ser executado pelo bash.

Finalmente, depois de salvar o arquivo, você precisa torná-lo executável com chmod +x file-name .

Agora, hipoteticamente, se você salvou isso como /home/your-username/bin/run-my-programs , você poderia digitar ~/bin/run-my-programs no seu shell, em ambos os programas deve iniciar.

Note que muitas distros possuem scripts de login que adicionam um diretório bin em seu $ HOME ao seu caminho de busca de comandos automaticamente, então é um ótimo lugar para colocar scripts de shell que você gostaria de executar facilmente. Eles só farão isso, no entanto, se $HOME/bin existir quando você fizer login. Então, você pode deixar de fora o caminho e digitar run-my-programs . Obviamente, você precisa ter cuidado ao nomear seus scripts para que eles não entrem em conflito com outros programas em seus sistemas - seria confuso e surpreendente se você nomeasse ls , por exemplo!

O script de shell acima não é tão útil assim. É mais útil quando seus programas são mais complicados. Por exemplo, este é um script real que uso no trabalho:

#!/bin/sh

xterm -geometry 80x24+0+0 -T 'Bennu-DBA' -e ssh bennu -t 'screen -d -R -S status' &

xterm -geometry 80x24+0+342 -e screen -S 'bservers' -c ~/.screenrc-bservers &
xterm -geometry 80x9+0+684 -T 'df-graph' -xrm '.xterm.vt100.allowTitleOps: no' &

( cd ~/src/haruhi.metrics.net/operations/backup/bennu && xterm -geometry 80x24+0+827 -T 'Bennu-Conf' ) &
( cd ~/src/haruhi.metrics.net/operations/backup/phoenix && xterm -geometry 80x24+509+827 -T 'Bennu-Conf' ) &

xterm -geometry 177x77+509+0 -T 'Console' -e screen -c ~/.screenrc-bconsole  &

Isso economiza um monte de trabalho colocando e redimensionando manualmente as janelas (todas as opções -geometry ). E todas as opções -e iniciam programas apropriados nelas.

    
por 10.04.2015 / 20:07
1

Sim. isso é bastante comum. Coloque os comandos que você deseja executar em um arquivo de texto, geralmente com uma extensão .sh (isso é uma convenção, não é necessário). Você pode ter que chmod +x <filename> . Então você simplesmente executa <filename>.sh ou ./<filename>.sh . Eu costumo criar um diretório bin/ fora do meu diretório home para scripts como este.

    
por 10.04.2015 / 19:49
0

Você tentou criar um alias ?

$ alias macro="kontact & rekonq"
$ macro

Onde macro é o nome do seu atalho.

    
por 10.04.2015 / 19:49