ead*_*ter 3 command-line bash case-sensitivity
bash 是否可以以不区分大小写的方式查找命令?
例如。这些命令行将始终运行 python:
python
Python
PYTHON
pyThoN
Run Code Online (Sandbox Code Playgroud)
一种方法是使用aliasshell 内置命令,例如:
alias Python='python'
alias PYTHON='python'
alias Python='python'
alias pyThoN='python'
Run Code Online (Sandbox Code Playgroud)
为了获得更好的方法,command_not_found_handle()可以按照这篇文章中的描述使用该函数:alias 中的 regex。例如,这将强制所有命令都小写:
command_not_found_handle() {
LOWERCASE_CMD=$(echo "$1" | tr '[A-Z]' '[a-z]')
shift
command -p $LOWERCASE_CMD "$@"
return $?
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不适用于内置命令,例如cd.
另外(如果你有 Bash 4.0)你可以在你的文件中添加一个小函数,.bashrc在执行之前将大写命令转换为小写。与此类似的东西:
function :() {
"${1,,}"
}
Run Code Online (Sandbox Code Playgroud)
然后您可以通过在命令行中调用来运行该命令: Python。
注意,正如 @cas 在评论中提到的, : 是 bash 的保留字。因此,为了避免不一致和问题,您可以将其替换为c或尚未保留的内容。