Ich lese ein Beispiel für ein Bash-Shell-Skript:
#!/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
Ich versuche, die Verwendung von "/ dev / null 2> & 1" hier zu verstehen. Zuerst dachte ich, dass dieses Skript / dev / null verwendet, um Fehler ordnungsgemäß zu ignorieren, ohne das Skript zum Absturz zu bringen (ähnlich wie bei der Behandlung von Ausnahmen in Programmiersprachen). Weil ich nicht sehe, wie die Verwendung von tar zum Komprimieren eines Verzeichnisses in eine tar-Datei möglicherweise Fehler verursachen kann.
tares in der Quelle nicht vorhanden ist, weil tarabgestürzt (man weiß es nie), weil auf dem Gerät kein Platz mehr vorhanden ist, weil die tarVersion geändert wurde und jetzt eine andere Syntax erforderlich ist, weil der Datenträger einen E / A-Fehler verursacht hat. Ich bin sicher, Sie könnten mehr finden.
/dev/nullverhindert nicht das Abstürzen, bereinigt jedoch die stdout- und stderr-Ausgabestreams.tarkann auf verschiedene Weise Fehler verursachen. Sie haben möglicherweise keinen Schreibzugriff, die Datei ist möglicherweise bereits vorhanden usw.