¿Por qué el signo de interrogación no funciona en este globo?

¿Por qué el signo de interrogación no funciona en este globo?

¿Qué estoy haciendo mal en el globo a continuación? Parece que debería funcionar según mi lectura deel manual.

A '?' (no entre corchetes) coincide con cualquier carácter.

$ touch file.txt file.text
$ ls file.*
file.text  file.txt
$ ls file.te?xt
ls: cannot access 'file.te?xt': No such file or directory

$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)

Respuesta1

Coincide ?con un solo carácter (como .en una expresión regular). No tiene ningún archivo que coincida con el patrón, file.te?xtpor lo que el patrón permanece sin expandir.

Es posible que esperaba que funcionara como en una expresión regular, donde significa "cero o uno de la expresión anterior". Desafortunadamente, no existe tal comodín en bash.

... a menos que habilites la extglobopción Shell:

shopt -s extglob

Entonces el patrón ?(list)coincidiría con cero o uno de los patrones en list.

$ shopt -s extglob
$ ls file.t?(e)xt
file.text file.txt

información relacionada