caractere curinga `* ` não pode corresponder a alguma string?

caractere curinga `* ` não pode corresponder a alguma string?
ls  -al  .functions*
-rw-r--r-- 1 root root 471040 Mar  2 10:01 .functions.php.swo
-rw-r--r-- 1 root root 438272 Mar  2 09:57 .functions.php.swp

*pode corresponder .php.swoe .php.swp
por que *não pode corresponder .functions.php?

ls  -al  *.swo
ls: cannot access '*.swo': No such file or directory
ls  -al  *swo
ls: cannot access '*swo': No such file or directory

Responder1

Os arquivos que começam com um ponto ficam ocultos nas listagens de arquivos por padrão. A maneira mais fácil de combinar esses tipos de arquivos seria colocar um ponto no início da expressão. No entanto, isso corresponderá apenas aos arquivos que começam com ..

ls  -al  .*.swo

A alternativa é definir dotglobantes de executar o comando, então os arquivos começando com .serão incluídos.

shopt -s dotglob

Adicione-o ao seu ~/.bashrcpara defini-lo como padrão.

Observe queconfiguração dotglobpode levar a resultados indesejadosao usar o shell bash, pois ambos .(diretório atual) e ..(diretório pai) aparecerão ao usar *. Com dotglobconjunto,nuncatente usar rm -R *.

Responder2

Como umextensãoà resposta de Shaido, gostaria de explicar por que a -aopção não funcionará aqui:

O lscomando faznãoprocessar curingas. O interpretador de linha de comando executa esta etapa:

Se você digitar a linha de comando " mycommand *.c", o interpretador de linha de comando substituirá primeiro a string curinga " *.c" pela lista de arquivos correspondentes e, em seguida, executará a linha de comando resultante:

mycommand a.c file.c test.c

O interpretador de linha de comando funciona da mesma maneira para todos os comandos, portanto não pode saber o que -asignifica "incluindo arquivos ocultos" no caso do lscomando (embora -atenha um significado totalmente diferente para outros comandos)...

informação relacionada