
¿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?xt
por 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 extglob
opció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