2012-04-16 17 views
8

Voglio creare un alias in bash, in modo tale cheCrea alias di più parole in bash?

git diff somefile 

diventa

git diff --color somefile 

Ma non voglio definire il mio alias personalizzato come

alias gitd = "git diff --color" 

perché se Mi sono abituato a questi alias personalizzati, quindi ho perso la capacità di lavorare su macchine che non hanno questi mapping.

Modifica: Sembra che bash non consenta l'alias di più parole. C'è qualche altra soluzione alternativa a questo oltre a creare l'alias?

+0

Non credo sia possibile ... –

risposta

8

Risposta migliore (per questo caso specifico).

Dalla pagina git-config man:

color.diff 
     When set to always, always use colors in patch. When false (or 
     never), never. When set to true or auto, use colors only when the 
     output is to the terminal. Defaults to false. 

Nessuna funzione o alias necessari. Ma l'approccio del wrapper di funzione è generale per qualsiasi comando; infila quel cartoncino nella manica.

+0

Grazie ancora per averlo indicato. Mi piacciono entrambe le tue risposte. Ma questo è molto specifico per il mio caso. Quindi selezionare questa come risposta accettata. – Sudar

1

Evitare spazi vuoti intorno segno assegnazione in bash:

alias gitd="git diff --color" 
16

Per creare un alias più intelligente per un comando, si devono scrivere una funzione wrapper che ha lo stesso nome di quel comando, e che analizza gli argomenti, li trasforma e poi chiama il comando reale con gli argomenti trasformati.

Ad esempio, la funzione git è in grado di riconoscere che diff è stato richiamato e inserire l'argomento --color.

Codice:

# in your ~/.bash_profile 

git() 
{ 
    if [ $# -gt 0 ] && [ "$1" == "diff" ] ; then 
    shift 
    command git diff --color "[email protected]" 
    else 
    command git "[email protected]" 
    fi 
} 

Se si desidera supportare tutte le opzioni prima di diff e avere ancora si aggiunge --color, è necessario fare questa analisi intelligente, ovviamente.

+0

Funziona perfettamente e risolve il mio problema. Grazie! – Sudar

+0

Si potrebbe voler usare 'comando git' invece di codificare il percorso. –

+0

Sapevo che c'era un modo per riferirsi al comando esterno originale, ma per la vita di me non riuscivo a ricordare. :) – Kaz

1

Stai abbaiando dall'albero sbagliato. Impostare l'opzione di configurazione color.diff su auto.