Pular para o conteúdo

Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar
01 02

1. Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 10:51h

rm !(*.srt)

Preciso deletar todos os arquivos não .srt de uma pasta, mas no script ele confunde o parentese do comando

Existe alguma maneira desse comando funcionar no script?

obrigado.

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

3. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 11:01h

luizsouza99 escreveu:

[...], mas no script ele confunde o parentese do comando

Mas, no terminal esse comando funcionou?

Fiz o teste aqui no meu terminal (bash) e não funciona: aparece "event not found"





4. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 11:05h

Caso funcione no seu terminal mas não funciona no script, então, provavelmente é porque o terminal está utilizando um determinado interpretador de comandos (que consegue ler corretamente o seu código), porém, o script está utilizando um outro interpretador de comandos.

Tente o seguinte:

- Veja qual é o interpretador de comandos do seu terminal:
 echo $SHELL 


- Na primeira linha do script coloque:
 #!/bin/nomedointerpretador 


5. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 11:49h

echo $SHELL = /bin/bash

no script = #!/bin/bash

6. Re: Terminal reconhece mas no script não -> rm !(*.srt)

Enviado em 20/03/2018 - 11:53h

luizsouza99 escreveu:

echo $SHELL = /bin/bash

no script = #!/bin/bash

isso...

como aqui no meu também é "bash" e não deu certo nem no terminal, portanto, nem no script...

então, imagino, que no seu também não deu certo no terminal.... é isso..?



7. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 12:27h

Não,

dá certo no terminal, mas quando executo no script aparece essa mensagem.

./prog: linha 4: erro de sintaxe próximo do `token' não esperado `('
./prog: linha 4: `rm !(*.srt)'

8. Re: Terminal reconhece mas no script não -> rm !(*.srt)

Enviado em 20/03/2018 - 12:27h

Da documentação do bash:

If the extglob shell option is enabled using the shopt builtin, following pattern matching operator is recognized as well:
              !(pattern-list)   Matches anything except one of the given patterns 


Suponho, então, que você deva considerar os valores da opção extglob no shell e no seu script.

9. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 12:29h

uso com o rm mesmo ?

10. Re: Terminal reconhece mas no script não -> rm !(*.srt)

Enviado em 20/03/2018 - 12:31h

extglob é uma opção do Bash que controla se o operador !(...) funciona ou não. Essa opção pode ser manipulada por meio do comando interno do Bash shopt.

11. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 12:53h

Dei o comando shopt e ele mostra que a opção extglob está on.

então quer dizer que o comando !(...) deveria funcionar né ?

12. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 13:07h

paulo1205 escreveu:

extglob é uma opção do Bash que controla se o operador !(...) funciona ou não. Essa opção pode ser manipulada por meio do comando interno do Bash shopt.

interessante...

não conhecia esse conjunto de opções...


01 02

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder