pushd 명령은 매개변수를 구분하지 않는 것으로 처리합니다.

pushd 명령은 매개변수를 구분하지 않는 것으로 처리합니다.

pushd대소문자를 구분하지 않게 하려면 어떻게 해야 합니까 ? 아무 소용이 없었어요

$ shopt -s nocasematch ; pushd pdf

bash: pushd: pdf: No such file or directory

올바른 안내를 도와주세요. 감사합니다.

답변1

사용 nocasematch:

일치하는 케이스가 없습니다.

설정된 경우 Bash는 일치를 수행할 때 대소문자를 구분하지 않고 패턴을 일치시킵니다.Case 또는 [[ 조건부 명령을 실행할 때, 패턴 대체 확장을 수행할 때 또는 프로그래밍 가능한 완료의 일부로 가능한 완료를 필터링할 때.


권장되지는 않지만 몇 가지 중요한 주의 사항이 있을 수 있습니다. 한 가지 기술은 를 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
}

그런 다음 do nocasepush pdf를 입력해야 합니다 PDF.

관련 정보