Confuso sobre o comportamento do asterisco no comando ls

Confuso sobre o comportamento do asterisco no comando ls

No Centos e no Debian eu tentei isso.

O * com o comando ls implica pesquisa recursiva?

Se eu começar a digitar um nome de diretório e clicar em tab, vejo o seguinte:

# ls /etc/rc<tab>
rc0.d/    rc1.d/    rc2.d/    rc3.d/    rc4.d/    rc5.d/    rc6.d/    rc.local  rcS.d/

Achei que se colocasse um asterisco no caminho veria a mesma coisa, mas em vez disso fez uma pesquisa recursiva:

# ls /etc/rc*
/etc/rc.local

/etc/rc0.d:
K50netconsole  K90network

/etc/rc1.d:
K50netconsole  K90network

/etc/rc2.d:
K50netconsole  S10network

/etc/rc3.d:
K50netconsole  S10network
...

O comando windows dir apenas me mostraria os diretórios correspondentes a /etc/rc* como posso obter esse comportamento de ls (sem usar a tecla tab)?

****Editar/Atualizar:

OK, agora eu entendo que * é interpretado pelo bash em vez do comando, mas é sempre interpretado como "enumerar entradas de arquivos e pastas" ou se eu usá-lo em um contexto diferente, ele faz outra coisa e, em caso afirmativo, existe algo grande instrução if no bash que diz "se * usado com caminhos do sistema de arquivos retorna nomes de arquivos e pastas, se * usado com rpm (comorpm -qa postagem*) retornar nomes de pacotes, etc"

Responder1

O Asterisk se expande antes de chegar ao lscomando, então isso é equivalente a

ls /etc/rc0.d    /etc/rc1.d   /etc/rc2.d    /etc/rc3.d    /etc/rc4.d ...

que listará o conteúdo de cada diretório separadamente.

Você pode usar ls -d /etc/rc*para suprimir a listagem dos arquivos dentro dos diretórios ou usar um comando que apenas exiba a expansão, como echo /etc/rc*.

Responder2

Por padrão, se você invocar lscom um argumento de diretório, ele exibirá o conteúdo do diretório. Você pode alterar esse comportamento com a -dopção. Deman ls

-d, --directory
       list  directory entries instead of contents, and do not derefer‐
       ence symbolic links

informação relacionada