Saya membaca contoh skrip 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
Saya mencoba memahami penggunaan "/ dev / null 2> & 1" di sini. Pada awalnya, saya pikir skrip ini menggunakan / dev / null untuk mengabaikan kesalahan dengan anggun, tanpa menyebabkan skrip crash (seperti mencoba menangkap penanganan pengecualian dalam bahasa pemrograman). Karena saya tidak melihat bagaimana menggunakan tar untuk mengkompres direktori menjadi file tar mungkin dapat menyebabkan segala jenis kesalahan.
tar
tidak ada dalam $ PATH Anda, karena tar
lumpuh (Anda tidak pernah tahu), karena tidak ada ruang tersisa di perangkat, karena tar
versi berubah dan sekarang memerlukan sintaks yang berbeda, karena disk menyebabkan kesalahan I / O. Saya yakin Anda bisa menemukan lebih banyak.
/dev/null
tidak akan mencegah crash, tetapi akan membersihkan aliran output stdout dan stderr.tar
dapat menyebabkan kesalahan dalam berbagai cara. Anda mungkin tidak memiliki akses tulis, file mungkin sudah ada, dll.