pushd
大文字と小文字を区別しないようにするにはどうすればよいですか?役に立たなかった
$ shopt -s nocasematch ; pushd pdf
bash: pushd: pdf: No such file or directory
正しい案内を手伝ってください。ありがとうございます。
答え1
使用nocasematch
:
一致するケースはありません。
設定されている場合、Bashは一致を実行するときに大文字と小文字を区別せずにパターンを一致させます。Caseまたは[[条件付きコマンドを実行するとき、パターン置換拡張を実行するとき、またはプログラム可能な完了の一部として可能な完了をフィルタリングするとき。
推奨されませんが、いくつかの重要な注意事項があるかもしれません。 1つの技術は、をnocaseglob
使用して関数を作成し、対応するソースコードを取得することです。
グローバルケースなし
設定すると、Bashはファイル名拡張を実行するときに大文字と小文字を区別せずにファイル名を一致させます。
たとえば、ここではnocaseglobを設定し、Witchは大文字と小文字に関係なくglobを拡張します。
引数が与えられるとpdf
グローバル化pdf*
され、両方とも同じ長さであればプッシュされます。その後、リセットnocaseglob
nocasepush() {
local g
g=$(shopt -p nocaseglob)
shopt -s nocaseglob
for d in "$1"*; do
if [ ${#d} -eq ${#1} ]; then
pushd "$d"
fi
break
done
$g
}
次にdonocasepush pdf
を入力する必要がありますPDF
。