bash 不区分大小写的命令匹配

bash 不区分大小写的命令匹配

bash 是否可以以不区分大小写的方式查找命令?

例如。这些命令行将始终运行 python:

python
Python
PYTHON
pyThoN

答案1

一种方法是使用aliasshell 内置命令,例如:

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.

另外(如果你有 Bash 4.0)你可以在你的文件中添加一个小函数,.bashrc在执行之前将大写命令转换为小写。与此类似的东西:

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

: Python然后您可以通过在命令行中调用来运行该命令。

注意,正如 @cas 在评论中提到的, : 是 bash 的保留字。因此,为了避免不一致和问题,您可以将其替换为c或尚未保留的内容。

相关内容