2012-04-16 30 views
8

Tôi muốn tạo ra một bí danh trong bash, như vậy màTạo bí danh nhiều từ trong bash?

git diff somefile 

trở thành

git diff --color somefile 

Nhưng tôi không muốn xác định bí danh tùy chỉnh của riêng tôi như

alias gitd = "git diff --color" 

bởi vì nếu Tôi quen với các bí danh tùy chỉnh này, sau đó tôi mất khả năng làm việc trên các máy không có các ánh xạ này.

Chỉnh sửa: Có vẻ như bash không cho phép bí danh nhiều từ. Có giải pháp thay thế nào khác ngoài việc tạo bí danh không?

+0

Tôi không nghĩ rằng nó có thể ... –

Trả lời

8

Câu trả lời hay hơn (đối với trường hợp cụ thể này).

Từ trang git-config người đàn ông:

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. 

Không có chức năng hoặc bí danh cần thiết. Nhưng cách tiếp cận hàm bao hàm là chung cho bất kỳ lệnh nào; dán thẻ lên tay áo của bạn.

+0

Cảm ơn bạn lần nữa vì đã chỉ ra điều này. Tôi thích cả hai câu trả lời của bạn. Nhưng điều này là rất cụ thể cho usecase của tôi. Vì vậy, chọn đây là câu trả lời được chấp nhận. – Sudar

1

khoảng trống Tránh xung quanh dấu hiệu phân công trong bash:

alias gitd="git diff --color" 
16

Để tạo một bí danh thông minh hơn cho một lệnh, bạn phải viết một hàm wrapper trong đó có tên giống như lệnh đó, và trong đó phân tích các đối số, biến đổi chúng, và sau đó gọi lệnh thực với các đối số được chuyển đổi.

Ví dụ: chức năng git của bạn có thể nhận ra rằng diff đang được gọi và chèn đối số --color vào đó.

Code:

# in your ~/.bash_profile 

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

Nếu bạn muốn hỗ trợ bất kỳ tùy chọn trước khi diff và vẫn còn có nó thêm --color, bạn phải làm cho này phân tích cú pháp thông minh hơn, rõ ràng.

+0

Hoạt động hoàn hảo và giải quyết vấn đề của tôi. Cảm ơn! – Sudar

+0

Bạn có thể muốn sử dụng lệnh 'git' thay vì mã hóa cứng đường dẫn. –

+0

Tôi biết có một cách để tham khảo lệnh bên ngoài ban đầu, nhưng đối với cuộc sống của tôi, tôi không thể nhớ. :) – Kaz

1

Bạn đang sủa cây sai. Đặt tùy chọn cấu hình color.diff thành auto.

Các vấn đề liên quan