Örnek bir bash shell betiği okuyorum:
#!/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
Burada "/ dev / null 2> & 1" kullanımını anlamaya çalışıyorum. İlk başta, bu betiğin, betiğin çökmesine neden olmadan, hataları inceleyerek yok saymak için / dev / null kullandığını düşündüm (programlama dillerinde istisna yakalamayı deneyin gibi). Çünkü bir dizini bir tar dosyasına sıkıştırmak için tar kullanmanın muhtemelen herhangi bir hataya neden olabileceğini görmüyorum.
tar
$ PATH'nizde olmadığı için tar
düştü (hiçbir zaman bilemezsiniz), çünkü cihazda yer kalmadı, çünkü tar
sürüm değişti ve şimdi farklı bir sözdizimi gerektiriyor, çünkü disk bir G / Ç hatasına neden oldu. Eminim daha fazlasını bulabilirsin.
/dev/null
çökmeyi engellemez, ancak stdout ve stderr çıktı akışlarını temizler.tar
çeşitli şekillerde hatalara neden olabilir. Yazma erişiminiz olmayabilir, dosya zaten mevcut olabilir, vb.