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 ls
comando, 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 ls
com um argumento de diretório, ele exibirá o conteúdo do diretório. Você pode alterar esse comportamento com a -d
opção. Deman ls
-d, --directory
list directory entries instead of contents, and do not derefer‐
ence symbolic links