bash 大文字と小文字を区別しないコマンドの一致

bash 大文字と小文字を区別しないコマンドの一致

大文字と小文字を区別せずにbashでコマンドを見つけることはできますか?

例えば。次のコマンドラインは常にPythonを実行します。

python
Python
PYTHON
pyThoN

答え1

alias1つの方法は、次のシェル組み込みコマンドを使用することです。

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維持されていない項目に置き換えることができます。

関連情報