Anexando Saída com tee
Por padrão, o comando tee sobrescreve o arquivo de destino cada vez que é usado. No entanto, em muitos cenários, você pode querer adicionar novas informações a um arquivo existente, em vez de substituir seu conteúdo. É aqui que a opção -a (anexar) é útil.
Compreendendo a Opção Anexar
Navegue para o diretório do projeto, se você ainda não estiver lá:
cd /home/labex/project
Vamos primeiro criar um arquivo com informações do sistema:
uname -a | tee system_info.log
Este comando exibirá as informações do seu sistema no terminal e as salvará em system_info.log. A saída será algo parecido com isto (sua saída pode ser diferente):
Linux ubuntu 5.15.0-1031-aws #35-Ubuntu SMP Fri Feb 10 02:14:02 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Agora, vamos verificar o conteúdo do arquivo:
cat system_info.log
Você deve ver as mesmas informações do sistema.
Agora, vamos anexar mais informações a este arquivo usando a opção -a:
echo "Date and time: $(date)" | tee -a system_info.log
Isso exibirá algo como:
Date and time: Wed May 3 14:22:34 UTC 2023
A flag -a diz ao tee para anexar a saída ao arquivo em vez de sobrescrevê-lo.
Vamos verificar o conteúdo do arquivo novamente:
cat system_info.log
Você deve ver agora tanto as informações do sistema quanto a data:
Linux ubuntu 5.15.0-1031-aws #35-Ubuntu SMP Fri Feb 10 02:14:02 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Date and time: Wed May 3 14:22:34 UTC 2023
Vamos anexar ainda mais informações ao nosso arquivo de log:
echo "Disk usage:" | tee -a system_info.log
df -h | tee -a system_info.log
Isso exibirá informações de uso do disco e as anexará ao nosso arquivo de log. A saída variará dependendo do seu sistema, mas pode ser algo parecido com isto:
Disk usage:
Filesystem Size Used Avail Use% Mounted on
/dev/root 19G 5.8G 13G 32% /
tmpfs 494M 0 494M 0% /dev/shm
tmpfs 198M 1.1M 197M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda15 105M 5.2M 100M 5% /boot/efi
tmpfs 100M 4.0K 100M 1% /run/user/1000
Vamos verificar o conteúdo do nosso arquivo de log mais uma vez:
cat system_info.log
Você deve ver agora todas as informações que adicionamos:
Linux ubuntu 5.15.0-1031-aws #35-Ubuntu SMP Fri Feb 10 02:14:02 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Date and time: Wed May 3 14:22:34 UTC 2023
Disk usage:
Filesystem Size Used Avail Use% Mounted on
/dev/root 19G 5.8G 13G 32% /
tmpfs 494M 0 494M 0% /dev/shm
tmpfs 198M 1.1M 197M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda15 105M 5.2M 100M 5% /boot/efi
tmpfs 100M 4.0K 100M 1% /run/user/1000
Compreendendo a Estrutura do Comando
A sintaxe para anexar com tee é:
command | tee -a filename
Onde:
command é qualquer comando que produz saída
| (pipe) envia a saída do comando para tee
tee é o próprio comando
-a é a opção para anexar ao arquivo em vez de sobrescrevê-lo
filename é o nome do arquivo onde a saída será anexada
Essa abordagem é particularmente útil para:
- Construir arquivos de log ao longo do tempo
- Capturar a saída de vários comandos em um único arquivo
- Manter um registro de estados ou operações do sistema