cd falha ao tentar entrar no diretório danetect version-agnostic

0

Estou instalando o Maldet no Debian 9.3:

cd /usr/local/src
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
tar -xzvf maldetect-current.tar.gz 
cd maldetect-*
bash ./install.sh

Ao fazer cd maldetect-* , recebi:

Bash: Too many arguments

Eu tentei fazer cd "maldetect-*" , mas esse comando é inválido.

Por que não consigo acessar o diretório? ...

    
por Arcticooling 08.01.2018 / 13:32

1 resposta

3

Em cd maldetect-* , todos os arquivos e diretórios que correspondem a esse padrão são expandidos na linha de comando. Você tem pelo menos o arquivo .tar e provavelmente um diretório encontrado dentro dele. Você só pode estar em um diretório por vez, então cd para vários diretórios não faz sentido.

Em cd "maldetect-*" , não há expansão. O comando em si é bom, mas você provavelmente não tem um diretório com um asterisco no nome, então ele não encontrará nada para cd .

Se você sabe que tem apenas um diretório que corresponde ao padrão, você pode usar cd maldetect-*/ com uma barra à direita para pedir ao shell que expanda apenas os nomes de diretório.

Se você pode ter vários diretórios que correspondem ao padrão, você terá que encontrar o mais novo ou procurar dentro do arquivo para encontrar o nome do diretório lá.

Encontrar o mais novo é discutido em BashFAQ 003 (ou talvez BashFAQ 099 ), e provavelmente algumas perguntas no site, como Encontre o arquivo mais novo. Várias restrições de tipo de arquivo .

No caso trivial em que todos os nomes de arquivos são conhecidos como agradáveis, ls -tr | tail -1 pode funcionar, mas veja Por que você não deve analisar a saída de ls (1) .

É claro que não deve ser difícil espiar dentro do arquivo, mas isso também supõe que o arquivo seja 'legal' de várias maneiras:

$ tar tzf maldetect-current.tar.gz | head -1 | cut -d/ -f1
maldetect-1.6.2
    
por 08.01.2018 / 13:53