Я читаю пример сценария оболочки bash:
#!/bin/bash
# This script makes a backup of my home directory.
cd /home
# This creates the archive
tar cf /var/tmp/home_franky.tar franky > /dev/null 2>&1
# First remove the old bzip2 file. Redirect errors because this generates some if the archive
# does not exist. Then create a new compressed file.
rm /var/tmp/home_franky.tar.bz2 2> /dev/null
bzip2 /var/tmp/home_franky.tar
# Copy the file to another host - we have ssh keys for making this work without intervention.
scp /var/tmp/home_franky.tar.bz2 bordeaux:/opt/backup/franky > /dev/null 2>&1
# Create a timestamp in a logfile.
date >> /home/franky/log/home_backup.log
echo backup succeeded >> /home/franky/log/home_backup.log
Я пытаюсь понять использование "/ dev / null 2> & 1" здесь. Сначала я подумал, что этот скрипт использует / dev / null для того, чтобы изящно игнорировать ошибки, не вызывая сбой скрипта (вроде как попытка перехватить обработку исключений в языках программирования). Потому что я не понимаю, как использование tar для сжатия каталога в файл tar может привести к любому типу ошибок.
tar
нет в вашем $ PATH, потому что tar
сбой (вы никогда не знаете), потому что на устройстве не осталось места, потому что tar
версия изменилась и теперь требует другого синтаксиса, потому что диск вызвал ошибку ввода-вывода. Я уверен, что вы могли бы найти больше.
/dev/null
не предотвратит сбой, но очистит выходные потоки stdout и stderr.tar
может вызвать ошибки различными способами. Возможно, у вас нет