Por que estou obtendo o erro no matches found when there is a match? [duplicado]

0
centos@ip-10-0-5-4 ~ $ sudo ls -l /var/solr/data/new_core/_default/*
zsh: no matches found: /var/solr/data/new_core/_default/*
centos@ip-10-0-5-4 ~ $ sudo ls -l /var/solr/data/new_core/_default/ 
total 4
drwxr-xr-x. 3 root root 4096 Mar 28 07:34 conf
    
por ans 28.03.2018 / 14:33

2 respostas

1

O * é expandido pelo shell antes de sudo ser chamado. Se você não tiver acesso a esse diretório, o zsh shell irá reclamar com "no matches found".

Você pode fazer isso em vez disso:

sudo sh -c 'ls -l /var/solr/data/new_core/_default/*'

Isso impede que o shell atual expanda o * e invoque sh com a linha de comando que você deseja executar como root.

    
por 28.03.2018 / 14:36
1

No primeiro caso:

  1. acesso direto impede a expansão shell (*) de /var/solr/data/new_core/_default/* quando você é centos .

  2. O comando
  3. expande como /var/solr/data/new_core/_default/* no primeiro caso.

  4. não há * arquivo ou dir em /var/solr/data/new_core/_default/ , daí o no match found .

No segundo caso, eu localizo o arquivo e os listo.

(*) esta é a Filename Expansion da expansão zsh (veja man zshexpn ).

FILENAME GENERATION

If a word contains an unquoted instance of one of the characters '*', ...

The word is replaced with a list of sorted filenames that match the pattern.

como você é centos antes que sudo zsh não pudesse acessar dir (por exemplo, arquivo conf ), daí o no match found .

    
por 28.03.2018 / 14:37

Tags