2014-09-12 6 views
5

clear 대신에 ccclear으로 자주 글자를 씁니다.bash 별칭에서 정규 표현식을 사용하는 방법

별칭으로 정규식을 사용할 수 있습니까? 같은 뭔가 :

alias c\+lear='clear' 
+2

내가 그것을 가능하지, 생각합니다. –

+0

@AvinashRaj, ... 별명이 없습니다. 원하는 행동은 다른 방법으로도 달성 될 수 있습니다. –

+1

'지우기'에 키보드 단축키를 사용하십시오. 그것은 충분한 작업입니다. 'Ctrl + L '은 기본 설정으로 작동합니다. – PSkocik

답변

5

번호

간단한 접두사 대체 실행 별칭, 그리고 다른 많은만큼 강력하지 않습니다.

그러나 Bash 4에서는 command_not_found_handle이라는 함수를 사용하여이 경우 트리거하고 원하는 논리를 실행할 수 있습니다.

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

는 동적으로 새로운 매핑을 추가 할 수 있기를 원하는 경우 : 위의와

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 
} 

, 당신은 사소 새로운 매핑을 추가 할 수 있습니다

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

아야! 여기에 미묘한 버그가 있었는데, 정규 표현식 대신 대체물을 통해 반복하고있었습니다. 수정 된 버전이 설치되었습니다. –

관련 문제