bash 대소문자를 구분하지 않는 명령 일치

bash 대소문자를 구분하지 않는 명령 일치

대소 문자를 구분하지 않고 bash에서 명령을 찾을 수 있습니까?

예를 들어. 다음 명령줄은 항상 Python을 실행합니다.

python
Python
PYTHON
pyThoN

답변1

alias한 가지 방법은 다음과 같은 쉘 내장 명령을 사용하는 것입니다 .

alias Python='python'
alias PYTHON='python'
alias Python='python'
alias pyThoN='python'

더 나은 접근 방식을 위해 command_not_found_handle()이 게시물에 설명된 대로 기능을 사용할 수 있습니다.별칭의 정규식. 예를 들어 이렇게 하면 모든 명령이 소문자로 강제됩니다.

command_not_found_handle() {
    LOWERCASE_CMD=$(echo "$1" | tr '[A-Z]' '[a-z]')
    shift
    command -p $LOWERCASE_CMD "$@"
    return $?
}

불행히도 와 같은 내장 명령에서는 작동하지 않습니다 cd.

.bashrc또는(Bash 4.0을 사용하는 경우) 실행하기 전에 대문자 명령을 소문자로 변환하는 작은 함수를 파일에 추가할 수 있습니다 . 이것과 비슷한 것 :

function :() {
    "${1,,}"
}

: Python그런 다음 명령줄에서 명령을 호출하여 실행할 수 있습니다.

주석에서 @cas가 언급했듯이 :는 bash에서 예약어입니다. 따라서 불일치와 문제를 피하기 위해 c아직 유지하지 않은 항목 으로 바꿀 수 있습니다 .

관련 정보