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
.