大文字と小文字を区別せずにbashでコマンドを見つけることはできますか?
例えば。次のコマンドラインは常にPythonを実行します。
python
Python
PYTHON
pyThoN
答え1
alias
1つの方法は、次のシェル組み込みコマンドを使用することです。
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
維持されていない項目に置き換えることができます。