一个命令,pushd 将参数视为不敏感

一个命令,pushd 将参数视为不敏感

如何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

相关内容