Her "git diff" den önce "clear" ile basşir


2

Her git diffyaptığımda clear & git diffonun yerine bashımın yapmasını isterim .

" Bash: Takma addaki boşluklar " bölümüne bir cevap vermeyi denedim :

git() {
    if [[ $@ == "diff" ]]; then
        command clear && git diff
    else
        command git "$@"
    fi
}

Fakat ne yazık ki, bu işe yaramıyor (komut satırı arasında bashve gitsonsuza dek geçen bir çeşit sonsuz döngüde bitiyor ve [CTRL|CMD]+Condan ayrılmam gerekiyor ).

Yanıtlar:


3

Gibi commandya sudoda sihirli olmayan çizginin geri kalanına uygulanır. (Sadece #yorumlar ve timeyerleşikler böyle sihirlere sahiptir.)

Yani, kullanırsanız command clear && git diff, önce iki ayrı komuta genişletilir: command clear("komut" öneki işe yaramazsa) ve git diff(ihtiyaç duyulan yerde).

Doğru işlev şöyle olacaktır:

git() {
    if [[ $1 == "diff" ]]; then
        clear && command git "$@"
    else
        command git "$@"
    fi
}

Alternatif:

git() {
    if [[ $1 == diff ]]; then
        clear
    fi
    command git "$@"
}

( "$@"Her iki durumda da, bir gün ihtiyaç duyabileceğiniz git diff --cachedgibi kullanın.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.