Case-Sensitivity

一個命令,pushd 通過參數執行不敏感

  • July 14, 2021

如何pushd通過不區分大小寫來執行它?嘗試無濟於事

$ shopt -s nocasematch ; pushd pdf

bash: pushd: pdf: No such file or directory

幫助指導正確的,謝謝。

nocasematch用於:

無大小寫匹配

如果設置,Bash 在執行匹配時以不區分大小寫的方式匹配模式,在執行 case 或 [[ 條件命令時,在執行模式替換詞擴展時,或者在過濾可能的補全作為可程式補全的一部分時。


儘管不推薦/這裡可能有一些重要的警告。一種技巧是使用nocaseglob. 創建一個函式並獲取它。

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
}

然後做nocasepush pdf應該進入PDF

引用自:https://unix.stackexchange.com/questions/658280