क्यों `टार -xvfz` विफल रहता है, लेकिन` टार xvfz` काम करता है?


41

tar -xvfz foo.tar.gz कोई त्रुटि देता है tar: z: Cannot open: No such file or directory

यह पूरी तरह से समझ में आता है - fस्विच एक फ़ाइल नाम की उम्मीद करता है, और इसलिए अंतिम होना चाहिए।

हालाँकि, हायफ़न tar xvfz foot.tar.gzकार्यों को छोड़ना और फ़ाइल को अनकम्प्रेस्ड और अनटार्स करना।

मैंने इसे OS X 10.8 और Ubuntu 12.04 पर परीक्षण किया है।

कोई विचार क्यों?

[जोड़ने के लिए संपादित]

मैं हमेशा उपयोग करता हूं tar -zxvf foo.tar.gz। हालाँकि, यह सवाल इस xkcd के कारण उत्पन्न हुआ है , और मेरा आश्चर्य जब किसी ने जोर देकर कहा कि tar xvfzकाम करेगा।

यहाँ छवि विवरण दर्ज करें


12
तो क्षमा करें: xkcd.com/1168
माइकल हाउस

जवाबों:


61

टार (के अनुसार वाक्य रचना के 3 प्रकार है इस ):

  • लंबे विकल्प (- फाइल)
  • छोटे विकल्प (-f)
  • पुराने विकल्प (एफ)

पुराने विकल्प सिंटैक्स के लिए, सभी अक्षरों को "टार" का पालन करना चाहिए और सभी को बिना किसी रिक्त स्थान के एक ही झुरमुट में गिरना चाहिए। अक्षरों का क्रम वास्तव में मायने नहीं रखता है, इसलिए जब तक उन पत्रों के तर्क विकल्पों के झुरमुट के बाद उसी क्रम का पालन करते हैं।

टार विकल्प लिखने का यह पुराना तरीका अनुभवी उपयोगकर्ताओं को भी आश्चर्यचकित कर सकता है। उदाहरण के लिए, दो आज्ञाएँ:

 # tar cfz archive.tar.gz file
 # tar -cfz archive.tar.gz file

काफी अलग हैं। पहला उदाहरण विकल्प 'f' के मान के रूप में 'ark.tar.gz' का उपयोग करता है और विकल्प 'z' को पहचानता है। दूसरा उदाहरण, हालांकि, विकल्प 'f' के मूल्य के रूप में 'z' का उपयोग करता है - शायद वह नहीं था जिसका इरादा था।

पुराने विकल्पों को टार के पुराने संस्करणों के साथ संगतता के लिए रखा जाता है।

'-' वाला कमांड इसके बराबर है

tar -czf archive.tar.gz file
tar -cf archive.tar.gz -z file
tar cf archive.tar.gz -z file

यही कारण है कि आपका उदाहरण "-" के साथ काम कर रहा है और "-" के साथ नहीं


3
wtf यूनिक्स
BlueRaja
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.