यह काम नहीं करता:
# echo Hello World > example.txt
# gzip < example.txt > example.txt # WRONG!
# file example.txt
example.txt: gzip compressed data, from Unix, last modified: Thu Mar 21 19:45:29 2013
# gunzip < example.txt
<empty file>
यह एक दौड़ की स्थिति है:
# echo Hello World > example.txt
# dd if=example.txt | gzip | dd of=example.txt # still WRONG!
# gunzip < example.txt
Hello World # may also be empty
समस्या यह है कि > example.txt
(या dd of=example.txt
उस मामले के लिए) फ़ाइल को मारता है इससे पहले कि अन्य प्रक्रिया को पढ़ने का मौका मिले। तो कोई स्पष्ट समाधान नहीं है, यही वजह है कि आपको छड़ी करनी चाहिए mv
।
ऐसे कई तरीके हैं जिनसे आप धोखा खा सकते हैं। आप फ़ाइल को खोल सकते हैं, फिर इसे अनलिंक कर सकते हैं - जब तक आप इसे बंद नहीं करेंगे तब तक फ़ाइल मौजूद रहेगी - और फिर उसी नाम से एक नई फ़ाइल बनाएं और उस पर gzipped डेटा लिखें। हालाँकि, मुझे इसका उपयोग करने के लिए बैश करने के लिए एक स्पष्ट तरीका नहीं पता है, और अगर मैंने किया भी, तो मेरा जवाब अभी भी होगा:
यह भी मत करो।
यदि gzip
किसी कारण से विफल हो जाता है, या कोई समस्या होती है, जैसे कि आप gzipping करते समय अंतरिक्ष से बाहर निकलते हैं (क्योंकि अन्य प्रक्रियाएं लिख रही हैं, या gzip परिणाम इनपुट से बड़ा है - जो यादृच्छिक डेटा के लिए होता है - आदि), तो आपने अपनी फ़ाइल खो दी है। । बधाई हो!
एक अलग फ़ाइल बनाएं और mv
सफलता पर। यह सबसे आसान, समझने में आसान और सबसे विश्वसनीय तरीका है जो आपको कभी भी मिलेगा।