Sua linha do crontab possui um ou mais asteriscos *
, indicando "a qualquer momento". Quando essa linha é substituída na substituição de comando, o resultado é algo como
echo * * * * * cmd > /path/to/file
Enquanto a maioria das expansões adicionais não é aplicada à saída da substituição de comando, a expansão do nome do caminho é (como é a divisão do campo) :
Os resultados da substituição de comando não devem ser processados para expansão adicional de til, expansão de parâmetro, substituição de comando ou expansão aritmética. Se uma substituição de comando ocorrer entre aspas duplas, a divisão de campo e a expansão do nome do caminho não devem ser executadas nos resultados da substituição.
A expansão do nome do caminho é o que se transforma *.txt
em uma lista de nomes de arquivos correspondentes (globbing), onde *
corresponde a tudo. O resultado final é que você obtém todos os nomes de arquivos (não ocultos) no diretório de trabalho listados para todos os *
itens da sua linha crontab.
Você pode corrigir isso citando a expansão, se o código publicado for um representante de um comando mais complexo:
sudo bash -c 'echo "$(tail -n 1 /etc/crontab)" > /path/to/file'
mas, mais diretamente, apenas perco echo
completamente:
sudo bash -c 'tail -n 1 /etc/crontab > /path/to/file'
Isso deve fazer o que você deseja e também é mais simples (a única outra diferença material é que esta versão omitirá a divisão de campos que, de outra forma, teria ocorrido, para que a execução de espaços não seja recolhida).