Я читаю приклад сценарію bash shell:
#!/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
може спричинити помилки різними способами. Можливо, у вас немає доступу для запису, файл може вже існувати тощо.