De acordo com a página de manual do bash:
bash varre cada palavra para os caracteres *,? e [. Se um desses caracteres aparecer, a palavra será considerada um padrão e substituída por uma lista classificada alfabeticamente de nomes de arquivos que correspondem ao padrão
e do nó info para ls
O programa `ls 'lista informações sobre arquivos (de qualquer tipo, incluindo diretórios). Opções e argumentos de arquivo podem ser misturados arbitrariamente, como de costume.
Para argumentos de linha de comando que não são opções, diretórios, por padrão, 'ls' lista o conteúdo dos diretórios, não recursivamente, e omite arquivos com nomes começando com '.'. Para outros argumentos não opcionais, por padrão, `ls 'lista apenas o nome do arquivo. Se nenhum argumento não opcional for especificado, 'ls' listará o conteúdo do diretório atual.
portanto, quando você fornece ls d*
, d * é expandido para a lista classificada de todos os nomes de arquivos / diretórios começando com d. Então você comando se torna
ls dump
e como dump é um nome de diretório, você obtém a listagem de todos os arquivos no diretório "dump", mas quando você fornece ls D*
, D * é expandido para " Dropbox de downloads de documentos da área de trabalho ", para que o comando se torne
ls Desktop Documents Downloads Dropbox
e como todos esses são diretórios, você obtém a listagem de arquivos em um diretório individual. Se houvesse um arquivo começando com D no diretório atual, ele seria listado separadamente.
ls p*
e ele mostrou-se um arquivo porque ele existe e umals P*
mostra da Pictures Public pasta que não há nenhum arquivo começando com P . E quando eu criei um diretório chamado poo , ele apareceu emls p*
Se d * e D * listam arquivos e pastas correspondentes a d * e D *, respectivamente, o comportamento é o mesmo, deve ter ocorrido um erro no seu teste.
Se você quiser listar apenas os nomes das pastas e não o conteúdo da pasta, precisará usar "-d":
fonte
Como sugerido acima, a
-d
opção é o caminho a percorrer. Adicionandopara o meu
~/.bashrc
arquivo funciona bem para mim.fonte
ld - The GNU linker
, o que impedirá o OP de compilar e vincular programas. Use emalias lsd='ls -d'
vez disso. Antes aliasing algo comofoo
sempre façotype foo
para ver sefoo
já é usado como o nome para algo, e decidir se a conveniência da substituição apelido a perda de acesso ao anteriorfoo