Interpretação por asterisco por shell [duplicado]

1

Eu sei que * deveria ser interpretado pelo shell não pelo comando sendo chamado

Agora, se eu executar o seguinte comando no meu diretório pessoal

$echo *

Eu obtenho

Desktop Documents Pictures Downloads  ...etc

Mas se eu executar o comando em um diretório vazio, obtenho

*

como saída

Por que isso? por que echo print * enquanto * não é escapado e apenas interpretado pelo shell

A saída não deve ser em branco?

    
por Marwa Said 01.05.2018 / 17:37

1 resposta

2

A seguinte resposta fornece uma explicação possível.

Vou citar:

note that if the expansion leads to nothing, i.e. in that case if the directory contains no non-hidden files, the * is left unchanged and passed as is to the command called.

Ou seja, ele expande o caractere curinga *, mas quando não corresponde a nada, é retido como está e passado para o comando chamado 'echo' neste caso.

    
por Arpit Jain 01.05.2018 / 17:55