Como usar o && em um doskey?

1

Eu sei que posso executar dois comandos consecutivos na linha de comando:

git add -u && git commit --amend --no-edit

Eu também tenho a configuração de aliases usando doskey

doskey a=git add $*

Mas como posso combinar vários comandos em um único doskey alias?

doskey amend=git add -u && git commit --amend --no-edit

Isso falha ao definir doskey como o primeiro comando doskey amend=git add -u e, em seguida, executa imediatamente git commit --amend --no-edit no tempo de execução, em vez de salvar o comando composto no doskey alias.

Eu também tentei citar a coisa toda:

doskey amend="git add -u && git commit --amend --no-edit"

Mas isso também falha porque interpreta as aspas literalmente:

'"git add -u && git commit --amend --no-edit"' is not recognized as an internal or external command, operable program or batch file.

    
por Jeff Puckett 27.10.2017 / 17:46

2 respostas

3

O problema é que && denota o fim do comando doskey e o segundo comando git é executado em linha após ele.

Eu tentei outras combinações de sintaxe, mas nenhuma delas permite que && seja analisado após a expansão doskey , além de:

doskey amend=cmd /c "git add -u && git commit --amend --no-edit"

Isso lança um novo shell, que é ineficiente. Uma solução melhor seria colocar os dois comandos em um arquivo de lote (por exemplo, amend.cmd ) e atribuir a macro a isso:

doskey amend=amend.cmd
    
por 27.10.2017 / 18:29
1

Este foi o primeiro resultado no google, mas eu encontrei outra pergunta semelhante com boas respostas.

1- escape do caractere e comercial doskey foo=bar ^& baz

2- use o próprio separador de comando do doskey doskey foo=bar $T baz

source

Isso é mais limpo e não abre janelas de comandos extras.

    
por 15.08.2018 / 15:33