Chaves vazias e ponto-e-vírgula no bash [duplicado]

4

O que faz

{} \;

string significa em bash?

Eu já vi isso algumas vezes, por exemplo, para encontrar e excluir todos os arquivos pelo nome que é preciso executar

find . -name "FILE-TO-FIND" -exec rm -rf {} \;

O que essa string faz?

    
por spiderface 20.12.2015 / 06:01

1 resposta

6

Tanto {} como ; têm significados especiais em bash , mas no contexto de find , é find que realmente interpreta esses dois (na verdade, queremos que find interprete esses dois).

Primeiro, -exec é uma ação de find . {} e ; são parâmetros especiais para o predicado -exec de find .

A sintaxe da ação -exec é:

-exec command ;

ou

-exec command {} + 

Portanto, precisamos evitar que {} e ; sejam interpretados pela shell antes.

No contexto de find .... -exec :

  • {} indica (contém) o (s) resultado (s) da expressão find , ou seja, find . -name "FILE-TO-FIND" neste caso. Observe que chaves vazias {} não têm significado especial para o shell, então podemos fugir sem fugir de {}

  • Como bash trata ; como o final de um comando, precisamos escapar disso com \ , ou seja, \; , para que possa ser analisado por -exec e não por bash .

por heemayl 20.12.2015 / 06:12