Tôi đang đọc một tập lệnh bash shell ví dụ:
#!/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
Tôi đang cố gắng hiểu cách sử dụng "/ dev / null 2> & 1" tại đây. Lúc đầu, tôi nghĩ tập lệnh này sử dụng / dev / null để bỏ qua các lỗi một cách duyên dáng, mà không khiến tập lệnh bị sập (giống như thử xử lý ngoại lệ trong các ngôn ngữ lập trình). Bởi vì tôi không thấy cách sử dụng tar để nén thư mục vào tệp tar có thể gây ra bất kỳ loại lỗi nào.
tar
không nằm trong $ PATH của bạn, bởi vì tar
bị lỗi (bạn không bao giờ biết), vì không còn chỗ trống trên thiết bị, vì tar
phiên bản đã thay đổi và hiện yêu cầu cú pháp khác nhau, vì đĩa gây ra lỗi I / O. Tôi chắc rằng bạn có thể tìm thấy nhiều hơn.
/dev/null
không ngăn chặn sự cố, nhưng sẽ dọn sạch các luồng đầu ra tiêu chuẩn và thiết bị xuất chuẩn.tar
có thể gây ra lỗi theo nhiều cách khác nhau. Bạn có thể không có quyền ghi, tệp có thể đã tồn tại, v.v.