O Google encontra este . É o que você procura depois?
Se eu fosse para automatizar a interação entre humanos e TTY, eu preferiria fazê-lo usando Espero .
Existe um programa desse tipo para o Terminal, como o plugin iMacros para o Firefox, que pode gravar o que eu fiz, depois fazer automaticamente o trabalho que eu fiz? Espero que haja um programa para me ajudar a fazer o trabalho de repetição no terminal, então, alguma dica?
Atenciosamente
O Google encontra este . É o que você procura depois?
Se eu fosse para automatizar a interação entre humanos e TTY, eu preferiria fazê-lo usando Espero .
bash
contém todos os utilitários que você realmente precisa. Se você quiser executar um número de comandos com um único comando, você pode escrever seus próprios scripts de shell ou escrever funções .
Há alguns dias, defini uma função cs
para alterar o diretório e listá-lo via ls
.
function cs() { cd $1 && ls ; }
$1
é o primeiro argumento. Se você quiser usar a lista de todos os argumentos, use $@
.
Pode ser invocado como
$ cs my_directory
Isso é ótimo para agrupar rapidamente vários comandos na sua sessão atual. Você pode colocar a função no final de seu ~/.bashrc
para carregá-la a cada nova instância de bash
.
Os scripts são executados em seu próprio processo. Isso significa que qualquer variável atribuída é local para esse processo. Para escrever um script, coloque um shebang no topo. Consiste nos caracteres #!
seguidos pelo caminho para o interpretador que executará seu arquivo. Shebangs poderia incluir
#!sh
#!/bin/bash
#!/usr/bin/perl
Em um script de shell, você pode fazer coisas como
#!/bin/bash
VARIABLE=42
echo "The variable is $VARIABLE" # echo appends a newline
echo "I'm now going to Google"
firefox http://www.google.com
Não se esqueça de tornar o script executável via
$ chmod +x my_script
Pode então ser executado como
$ ./my_script # from the current directory
$ ~/path/to/my_script # absolute path, ~ is your User directory.
A sintaxe bash contém condicionais e loops e switches e quase tudo. Se você detesta o baixo desempenho ou se você precisa de uma sintaxe mais agradável, você pode facilmente aprender algumas linhas de Perl ou Python.
Essas soluções dependem de saber o que você deseja fazer antes de fazê-lo. Se esse não for o caso, você pode examinar o arquivo de histórico ( ~/.bash_history
por padrão) ou usar o comando history
.
$ history 5
lista os 5 últimos comandos, com um número em execução. No meu caso, isso dá
1892 function foo() { cd $1 ; ls ; }
1893 foo ..
1894 history
1895 history 15
1896 history 5
Você pode facilmente usar essa lista de comandos para escrever uma função ou um script de shell.
Aqui está uma solução para gravação de macro. Ele usa duas funções definidas pelo usuário e um script em linha perl para fazer o processamento interessante.
function create-marker() { echo "Starting the recording" ; }
function process-marker() { history | perl -ne's/^\s*\d*\s*//; chomp; push @commands, $_; }{ pop @commands; push @macro, pop @commands until $commands[-1] eq "create-marker" or !@commands; print "$_\n" for reverse @macro;' ; }
Esta sessão
$ create-marker
Starting the recording
$ cd ~
$ ls
# omitted
$ firefox http://www.google.com
$ process-marker
Cria a seguinte saída:
cd ~
ls
firefox http://www.google.com
Você pode copiar e colar isso facilmente em um novo script.
Nota: Eu não tenho um Mac e testei isso no Ubuntu. Os caminhos podem ser diferentes, mas os conceitos são sólidos.
É improvável que lhe interesse se você não for um usuário, mas o emacs possui um modo shell ( M-x shell
) que naturalmente suporta os comandos normais de edição do emacs, incluindo macros de teclado ( C-x (
para iniciar a gravação, C-x )
para parar, então C-x e
para executar). Se tudo o que você está fazendo é repetir um monte de digitação, isso pode ser útil.
Mas mais amplamente eu concordo com o bobah - você não diz o problema que está tentando resolver, mas é quase certamente algo mais adequado para ferramentas como o esperado do que a falsificação de entrada bruta ...
Eu sei que você está pedindo isso para o Terminal, mas como eu não ouvi falar sobre tal programa, uma alternativa seria o Terminal ZOC a>. É comercial, por isso pode não ser o seu caminho, mas é a coisa mais próxima que posso pensar, dada a descrição do seu problema. Ele suporta o uso de um shell local no Mac OS (essencialmente um substituto para o terminal) e possui um recurso de gravação de script (menu Script - > Record Scipt). Você também pode mapear esses scripts (ou textos mais curtos) em botões e combinações de teclas.