Adicionando um crontab - sintaxe

2
crontab -l | { cat; echo "0 0 * * * /path/to/cron/job"; } | crontab -

Eu peguei esta linha da rede para adicionar um novo trabalho cron. Isso funciona bem e bem. Eu tenho as dúvidas,

1) Por que precisamos das chaves (ou podemos usar aspas simples) aqui,

{ cat; echo "0 0 * * * /path/to/cron/job"; }

2) E por que precisamos do comando cat; aqui?

3) crontab - . Se meu entendimento estiver correto, - será substituído pela saída do comando anterior no pipeline?

    
por Madhavan Kumar 11.06.2015 / 03:39

1 resposta

6

1) Why do we need the curly brackets

Porque você precisa canalizar a saída de cat e a saída de echo para crontab - . Sem as chaves, não é possível montar a saída dos dois comandos em um único pipe.

(or can we use single quotes) here

Não. ... | 'cat; echo "0 0 * * * /path/to/cron/job"' | ... significa "pipe para um executável chamado cat; echo "0 0 * * * /path/to/cron/job" ". Isso não faz sentido.

2) And why do we need the cat; command here?

Você não faz. Você poderia ter escrito a mesma coisa com mais eficiência do que:

{ crontab -l; echo '0 0 * * * /path/to/cron/job'; } | crontab -

3) crontab -. If my understanding is correct, does - get replaced by the output of the previous command in the pipeline?

Sim, mas isso porque crontab suporta especificamente isso. Usar - para significar stdin e / ou sdtout é uma convenção compreendida por muitos comandos, mas é apenas uma convenção. Não é obrigatório pelo shell, como, por exemplo, >file ou | command .

    
por 11.06.2015 / 06:13

Tags