2012-04-16 15 views
8

Quiero crear un alias en bash, de tal manera queCrear alias de varias palabras en bash?

git diff somefile 

convierte

git diff --color somefile 

Pero no quiero definir mi propio alias personalizado como

alias gitd = "git diff --color" 

porque si Me acostumbro a estos alias personalizados, luego pierdo la capacidad de trabajar en máquinas que no tienen estas asignaciones.

Editar: Parece que bash no permite el alias de varias palabras. ¿Hay alguna otra solución alternativa a esto aparte de crear el alias?

+0

No creo que sea posible ... –

Respuesta

8

Mejor respuesta (para este caso).

Desde la página git-config hombre:

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. 

Sin función o alias necesarios. Pero el enfoque de envoltura de funciones es general para cualquier comando; pon esa tarjeta en tu manga.

+0

Gracias de nuevo por señalar esto. Me gustan ambas tus respuestas. Pero este es muy específico para mi uso. Entonces seleccionando esto como la respuesta aceptada. – Sudar

1

Evita espacios en blanco alrededor de la muestra de asignación de fiesta:

alias gitd="git diff --color" 
16

para crear un alias más inteligente para un comando, que tienen que escribir una función de contenedor que tiene el mismo nombre que ese comando, y que analiza los argumentos, los transforma y luego llama al comando real con los argumentos transformados.

Por ejemplo, su función git puede reconocer que se está invocando , e inserta allí el argumento --color.

Código:

# in your ~/.bash_profile 

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

Si quieres apoyar cualquier opción antes de diff y todavía tienen que añadir --color, usted tiene que hacer este análisis inteligente, obviamente.

+0

Funciona perfectamente y resuelve mi problema. ¡Gracias! – Sudar

+0

Es posible que desee utilizar 'command git' en lugar de codificar la ruta. –

+0

Sabía que hay una forma de referirme al comando externo original, pero durante toda mi vida no pude recordarlo. :) – Kaz

1

Estás ladrando al árbol equivocado. Establezca la opción de configuración color.diff en auto.