2014-09-12 44 views
5

Sık sık clear yerine ccclear yazarım.Basal alias'lar içinde regex nasıl kullanılır?

Takma ad kullanarak diğer ad kullanmak mümkün müdür? şöyle birşey:

alias c\+lear='clear' 
+2

i bu mümkün değil, bence. –

+0

@AvinashRaj, ... bir takma ad ile değil, no. İstenilen davranış başka yollarla da sağlanabilir. –

+1

'Clear' için bir klavye kısayolu kullanın. Bu yeterince sık bir işlemdir. Ctrl + L' varsayılan ayarlarla çalışmalıdır. – PSkocik

cevap

5

sayılı

basit önek ikamesi çalıştırmak adlar ve fazla bir şey için yeterince güçlü değildir. Ancak, Bash 4'te, bu durumda tetiklemek ve seçtiğiniz mantığı çalıştırmak için command_not_found_handle adlı bir işlev kullanabilirsiniz.

command_not_found_handle() { 
    if [[ $1 =~ ^c+lear$ ]]; the 
    clear 
    else 
    return 127 
    fi 
} 

dinamik yeni eşleştirmeleri eklemek mümkün isteseydik: Yukarıdaki ile

declare -A common_typos=() 
common_typos['^c+lear$']=clear 
command_not_found_handle() { 
    local cmd=$1; shift 
    for regex in "${!common_typos[@]}"; do 
    if [[ $cmd =~ $regex ]]; then 
     "${common_typos[$regex]}" "[email protected]" 
     return 
    fi 
    done 
    return 127 
} 

, sen trivially yeni eşleştirmeleri ekleyebilirsiniz:

common_typos['^ls+$']=ls 
+0

Ouch! Burada ince bir hata vardı, burada regeeks yerine yerine geçiyordum. Düzeltilmiş bir sürüm şimdi mevcut. –

İlgili konular