如何pushd
通过不区分大小写来执行它?尝试无济于事
$ shopt -s nocasematch ; pushd pdf
bash: pushd: pdf: No such file or directory
帮忙指导一下正确的,谢谢。
答案1
用于nocasematch
:
没有案例匹配
如果设置,Bash 在执行匹配时会以不区分大小写的方式匹配模式在执行 case 或 [[ 条件命令时,在执行模式替换字扩展时,或者在过滤可能的完成作为可编程完成的一部分时。
尽管不推荐/可能是一些重要的警告。一种技巧是使用nocaseglob
.创建一个函数并获取它的源码。
没有案例全局
如果设置,Bash 在执行文件名扩展时会以不区分大小写的方式匹配文件名。
例如这里我们设置了nocaseglob,女巫会忽略大小写来扩展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
。