Estoy leyendo un ejemplo de script de 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
Estoy tratando de entender el uso de "/ dev / null 2> & 1" aquí. Al principio, pensé que este script usa / dev / null para ignorar con gracia los errores, sin causar que el script se bloquee (algo así como intentar capturar el manejo de excepciones en lenguajes de programación). Porque no veo cómo el uso de tar para comprimir un directorio en un archivo tar podría causar algún tipo de error.
tar
no está en su $ PATH, porque tar
se bloqueó (nunca se sabe), porque no queda espacio en el dispositivo, porque la tar
versión cambió y ahora requiere una sintaxis diferente, porque el disco causó un error de E / S. Estoy seguro de que puedes encontrar más.
/dev/null
no evitará fallas, pero limpiará las secuencias de salida stdout y stderr.tar
podría causar errores de varias maneras. Es posible que no tenga acceso de escritura, que el archivo ya exista, etc.