Sto leggendo un esempio di script di shell 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
Sto cercando di capire l'uso di "/ dev / null 2> & 1" qui. All'inizio, ho pensato che questo script usasse / dev / null per ignorare con garbo gli errori, senza causare il crash dello script (un po 'come provare a catturare la gestione delle eccezioni nei linguaggi di programmazione). Perché non vedo come l'uso di tar per comprimere una directory in un file tar possa eventualmente causare qualsiasi tipo di errore.
tar
non si trova in $ PATH, perché tar
si è bloccato (non si sa mai), perché non è rimasto spazio sul dispositivo, perché la tar
versione è cambiata e ora richiede una sintassi diversa, perché il disco ha causato un errore I / O. Sono sicuro che potresti trovarne di più.
/dev/null
non impedire l'arresto anomalo, ma pulirà i flussi di output stdout e stderr.tar
potrebbe causare errori in vari modi. Potresti non avere accesso in scrittura, il file potrebbe già esistere, ecc.