combinação de comandos insensíveis a maiúsculas e minúsculas

2

É possível que o bash encontre comandos de uma maneira que não diferencia maiúsculas e minúsculas?

por exemplo. estas linhas de comando sempre rodarão python:

python
Python
PYTHON
pyThoN
    
por eadmaster 29.05.2016 / 15:53

1 resposta

3

Uma maneira é usar alias shell builtin, por exemplo:

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

Para uma melhor abordagem, a função command_not_found_handle() pode ser usada conforme descrito neste post: regex em alias . Por exemplo, isso forçará todos os comandos para minúsculas:

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

Infelizmente, isso não funciona com comandos internos como cd .

Além disso (se você tiver o Bash 4.0), você pode adicionar uma pequena função em seu .bashrc para converter os comandos em maiúsculas em minúsculas antes executá-los. Algo semelhante a isto:

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

Então você pode executar o comando chamando : Python na linha de comando.

NB como @cas mencionadas nos comentários: é uma palavra bash reservada. Portanto, para evitar inconsistências e problemas, você pode substituí-lo por c ou algo que ainda não está reservado.

    
por 29.05.2016 / 16:06