Como faço para obter vários scripts solicitados com um alias no Cygwin?

1

Eu quero executar um comando, depois abrir um segundo, mas modificá-lo antes de pressionar enter. (Cygwin)

Eu costumo digitar tudo assim:

svn up 8.0; ./merge.py 8.0 12345

Eu também tenho que fazer isso com diferentes versões e revisões, então depois disso, eu digito tudo isso novamente para cada um:

svn up 8.1; ./merge.py 8.1 12345

O problema é que o 12345 sempre muda, então eu tenho que apenas subir a seta e deletá-lo e reescrevê-lo.

Então, o que eu quero fazer é digitar isso:

m8 12345

ou

m81 12345

ou

m8 54321

Para cada um diferente. Os resultados seriam:

$ m8 12345
$ svn up 8.0; ./merge.py 8.0 12345

(mas, na verdade, não é executado, basta digitar para mim no prompt)

$ m81 12345
$ svn up 8.1; ./merge.py 8.1 12345

(mas, na verdade, não é executado, basta digitar para mim no prompt)

$ m8 54321
$ svn up 8.0; ./merge.py 8.0 54321

(mas, na verdade, não é executado, basta digitar para mim no prompt)

Nesse momento, eu poderia pressionar enter ou alterar o 12345 ou não fazer nada.

    
por Matt 07.03.2013 / 18:47

3 respostas

1

Crie um alias para a primeira parte do comando. Quando estiver pronto, você pode unalias .

O que você faria no seu exemplo é:

alias m8='svn up 8.0; ./merge.py 8.0'

Qual deles permite:

m8 12345

Quando terminar, você poderá excluir o alias:

unalias m8
    
por 07.03.2013 / 19:56
0

Use os recursos de histórico do bash . Coloque o seguinte no seu arquivo .bashrc :

shopt -s histverify

Agora, na linha de comando, você pode digitar Controle r , o começo digitando svn up . Ele deve pesquisar de volta através do seu histórico o primeiro comando que inicia o "svn up". Repetições repetidas de Controle r irão encontrar os comandos anteriores. Se a qualquer momento você pressionar Enter , a opção histverify que definimos acima fará com que o comando atualmente exibido seja exibido na linha de comando para edição, não executado imediatamente.

Isso não é exatamente o que você pediu, mas pode funcionar também. É possível escrever uma função que pode se comportar de maneira semelhante ( $ m 8.1 54321 ), mas os detalhes são complicados.

    
por 07.03.2013 / 19:54
0

Escreva um script de shell ou uma função (por exemplo, chamada m ) que faça algo assim:

 Validate arguments: $1 and $2 are numeric.
 Compute ver_num from $1; e.g., 8 –> 8.0, 81 –> 8.1
my_command="svn up $ver_num; ./merge.py $ver_num $2"
echo "$my_command"
history -s "$my_command"

Você terá que executá-lo como m 8 12345 (em vez de m8 12345 ). O comando history -s colocará "$ my_command" na lista de histórico sem executá-lo, então você deve ser capaz de pressionar Cursor Up , opcionalmente editar o comando, e pressionar Enter –– ou não faça nada.

    
por 07.03.2013 / 20:41