bash 是否可以以不区分大小写的方式查找命令?
例如。这些命令行将始终运行 python:
python
Python
PYTHON
pyThoN
答案1
一种方法是使用alias
shell 内置命令,例如:
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
或尚未保留的内容。