मैं एक उदाहरण 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
मैं यहाँ "/ dev / null 2> & 1" के उपयोग को समझने की कोशिश कर रहा हूँ। सबसे पहले, मुझे लगा कि इस स्क्रिप्ट का उपयोग करता है / dev / null में त्रुटियों को इग्नोर करने के लिए, बिना स्क्रिप्ट को क्रैश किए (जैसे प्रोग्रामिंग भाषाओं में अपवाद को पकड़ने की कोशिश करना) को इग्नोर करना। क्योंकि मैं यह नहीं देखता कि टार फ़ाइल में एक निर्देशिका को संक्षिप्त करने के लिए टार का उपयोग कैसे संभवत: किसी भी प्रकार की त्रुटियों का कारण बन सकता है।
tar
आपके $ पेट में नहीं है, क्योंकि tar
दुर्घटनाग्रस्त (आप कभी नहीं जानते), क्योंकि डिवाइस पर कोई जगह नहीं बची है, क्योंकि tar
संस्करण बदल गया है और अब अलग सिंटैक्स की आवश्यकता है, क्योंकि डिस्क में आई / ओ त्रुटि का कारण था। मुझे यकीन है कि आप अधिक पा सकते हैं।
/dev/null
दुर्घटना को रोकने के लिए नहीं है, लेकिन stdout और stderr उत्पादन धाराओं को साफ करेगा।tar
विभिन्न तरीकों से त्रुटियां पैदा कर सकता है। आपके पास लिखने की पहुंच नहीं हो सकती है, फ़ाइल पहले से मौजूद हो सकती है, आदि