Добавление вывода с использованием tee
По умолчанию команда tee перезаписывает целевой файл каждый раз, когда она используется. Однако в многих сценариях вы, возможно, захотите добавить новую информацию в существующий файл, а не заменить его содержимое. Именно здесь опция -a (append, добавление) пригодится.
Понимание опции добавления
Перейдите в проектную директорию, если вы еще не там:
cd /home/labex/project
Сначала создадим файл с информацией о системе:
uname -a | tee system_info.log
Эта команда отобразит информацию о вашей системе в терминале и сохранит ее в файл system_info.log. Вывод будет выглядеть приблизительно так (ваш вывод может отличаться):
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
Теперь проверим содержимое файла:
cat system_info.log
Вы должны увидеть ту же информацию о системе.
Добавление информации в файл
Теперь добавим больше информации в этот файл с использованием опции -a:
echo "Date and time: $(date)" | tee -a system_info.log
Это отобразит что-то вроде:
Date and time: Wed May 3 14:22:34 UTC 2023
Флаг -a сообщает команде tee добавить вывод в файл вместо его перезаписи.
Проверим содержимое файла еще раз:
cat system_info.log
Теперь вы должны увидеть как информацию о системе, так и дату:
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
Добавление еще больше информации
Добавим еще больше информации в наш лог-файл:
echo "Disk usage:" | tee -a system_info.log
df -h | tee -a system_info.log
Это отобразит информацию о использовании диска и добавит ее в наш лог-файл. Вывод будет различаться в зависимости от вашей системы, но может выглядеть приблизительно так:
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
Проверим содержимое нашего лог-файла еще раз:
cat system_info.log
Теперь вы должны увидеть всю информацию, которую мы добавили:
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
Понимание структуры команды
Синтаксис добавления с использованием tee выглядит так:
command | tee -a filename
Где:
command - любая команда, которая генерирует вывод
| (pipe) отправляет вывод команды в tee
tee - сама команда
-a - опция для добавления в файл вместо его перезаписи
filename - имя файла, в который будет добавлен вывод
Этот подход особенно полезен для:
- Построения лог-файлов со временем
- Захвата вывода нескольких команд в одном файле
- Сохранения записи о состояниях или операциях системы