Eu tenho o seguinte conjunto de comandos usado para atualizar todos os meus sites WordPress em minha partição de hospedagem compartilhada CentOs na plataforma do meu provedor de hospedagem (via cron diário).
Os wp
comandos dentro do pushd-popd
conjunto são do programa WP-CLI , que é uma extensão Bash usada para várias ações em nível de shell em sites WordPress.
for dir in public_html/*/; do
if pushd "$dir"; then
wp plugin update --all
wp core update
wp language core update
wp theme update --all
popd
fi
done
O diretório public_html
é o diretório no qual todos os diretórios do site estão localizados (cada site geralmente possui um banco de dados e um diretório de arquivos principal).
Dado que public_html
tem alguns diretórios que não são diretórios do site WordPress, o WP-CLI retornaria erros relacionados a eles.
Para evitar esses erros, suponho que poderia fazer:
for dir in public_html/*/; do
if pushd "$dir"; then
wp plugin update --all 2>myErrors.txt
wp core update 2>myErrors.txt
wp language core update 2>myErrors.txt
wp theme update --all 2>myErrors.txt
popd
fi
done
Em vez de escrever 2>myErrors.txt
quatro vezes (ou mais), existe uma maneira de garantir que todos os erros, de todos os comandos, irão para o mesmo arquivo, em uma linha?
O
> file
operador abre ofile
para escrita, mas o trunca inicialmente. Isso significa que cada novo> file
faz com que o conteúdo do arquivo seja substituído.Se você quiser
myErrors.txt
que contenha o erro de todos os comandos, precisará abrir esse arquivo apenas uma vez ou usar>
a primeira vez e>>
as outras vezes (o que abre o arquivo no modo de acréscimo ).Aqui, se você não se importa que
pushd
/popd
errors também vá para o arquivo de log, você pode redirecionar todo ofor
loop:Ou você pode abrir o arquivo de log em um fd acima de 2, 3, por exemplo, e usar
2>&3
(ou2>&3 3>&-
para não poluir comandos com fds que eles não precisam) para cada comando ou grupo de comandos que deseja redirecionar para o arquivo de log :Você pode usar chaves para agrupar um bloco e redirecionar toda a saída: