LANG=C LC_ALL=C : ${TMPDIR:=/tmp} GTDIR=$TMPDIR/extglob4-$$ shopt -s extglob [ -d "${GTDIR}" ] || mkdir "${GTDIR}" cd "${GTDIR}" || { echo "extglob4: cannot cd to ${GTDIR}" exit 2 } touch a b c .x .y .z echo .!(|.) # correct echo * # correct echo @(*|.!(|.)) # wrong, adds . and .. echo @(*|@(f)) # ?? echo @(*|@(ff)) echo !(f) echo !(f)!(f) shopt -s dotglob echo @(*|@(f)) echo @(*|@(ff)) cd $OLDPWD rm -rf $GTDIR [[ a = a*?(/)b ]] && echo bad match 1