Por que o comando “ls“ * ”não mostra nada?

5
 ls "*"

Isso não mostra nada no meu diretório. Por quê?

Não é * um curinga que mostrará tudo?

    
por dfdsfsdf 22.06.2017 / 21:21

2 respostas

20

Quando está entre aspas duplas, o * não é tratado como glob e, portanto, não é expandido. Então você está pedindo para o ls listar um arquivo chamado * , que provavelmente não existe.

Para ver todos os arquivos, você pode executar ls sem nenhum argumento, pois o comportamento padrão é mostrar todos os arquivos no diretório atual. Se você quisesse passar todos os arquivos como argumentos para ls por algum motivo, basta remover as aspas para que você execute

ls *

mas isso é muito parecido com

ls

exceto que se você tiver muitos arquivos * pode se expandir para passar muitos argumentos para ls , e também ls * mostrará o conteúdo dos diretórios, enquanto ls por si só mostrará que os diretórios estão no diretório atual sem descer para eles.

    
por 22.06.2017 / 21:23
-7
ls *.* /Dir (dir is optional) 

lista todos os arquivos (independentemente do tipo de arquivo) no diretório de trabalho atual dos usuários (encontrado pelo pwd) ou em / Dir e

ls * /Dir (dir optional)

lista todos os arquivos e diretórios abaixo no diretório de trabalho atual do usuário ou em / Dir. No entanto,

ls "*" & ls *.* 

não listará recursivamente, para isso você precisa

ls -R *.* /Dir

ou

ls -R "*" /Dir

Quanto ao porquê

ls "*"

não está funcionando corretamente, você está correto: * é um curinga, e quando você chama ls assim:

ls "*"

você está pedindo bash para encontrar um arquivo e / ou diretório que tenha um asterisco em seu nome. Eu tinha instalado um IDE e não consegui encontrar a configuração e os arquivos principais para ele, então usei estes comandos para encontrar os arquivos:

(encontrou arquivos correspondentes ao padrão e redirecionou-os para um arquivo específico)

locate *eclipse* >locate_eclipse.txt
locate *tar* > locate_tar.txt
locate *.tar* > locate_".tar".txt
locate *compiler* > locate_compiler.txt
locate *JRE* > locate_JRE.txt
locate *jre* > locate_jre.txt

(Pesquisou todo o sistema de arquivos e apenas imprime os que combinam com o padrão)

ls -R / | grep "eclipse"
ls -R / | grep "tar"
ls -R / | grep ".tar"
ls -R / | grep "compiler"
ls -R / | grep "JRE"

Desculpe pelo discurso, mas eu tentei cobrir a maioria das bases.

    
por 23.06.2017 / 03:17