Come usare && in un doskey?


1

So di poter eseguire due comandi back-to-back nella riga di comando:

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

Ho anche impostato gli alias usando doskey

doskey a=git add $*

Ma come posso combinare più comandi in un singolo doskeyalias?

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

Ciò fallisce impostando il doskeyprimo comando doskey amend=git add -ue quindi procede immediatamente all'esecuzione git commit --amend --no-editin fase di esecuzione invece di salvare il comando composito doskeysull'alias.

Ho anche provato a citare il tutto:

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

Ma anche questo fallisce perché interpreta le citazioni alla lettera:

'"git add -u && git commit --amend --no-edit"' non è riconosciuto come comando interno o esterno, programma eseguibile o file batch.

Risposte:


3

Il problema è che &&indica la fine del doskeycomando e il secondo gitcomando viene eseguito in linea dopo di esso.

Ho provato altre combinazioni di sintassi, ma nessuna di queste permette &&di essere analizzata dopo l' doskeyespansione, a parte:

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

Questo avvia una nuova shell, che è inefficiente. Una soluzione migliore potrebbe essere quella di inserire entrambi i comandi in un file batch (ad es. amend.cmd) E assegnare la macro a questo:

doskey amend=amend.cmd

1

Questo è stato il primo risultato su Google, ma ho trovato altre domande simili con belle risposte.

1- sfuggire al carattere e commerciale doskey foo=bar ^& baz

2- utilizzare il separatore dei comandi di doskey doskey foo=bar $T baz

fonte

Questo è più pulito e non apre finestre di comando extra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.