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


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

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

हालांकि, हाइफ़न छोड़ना tar xvfz foot.tar.gz काम करता है और असम्पीडित करता है और फ़ाइल को अनार करता है।

मैंने ओएस एक्स 10.8 और उबंटू 12.04 पर इसका परीक्षण किया है।

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

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

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

enter image description here


38
2018-02-01 14:44


मूल


बहुत अफसोस: xkcd.com/1168 - MichaelHouse


जवाब:


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

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

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

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

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

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

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

'-' के साथ कमांड बराबर है

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

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


60
2018-02-01 15:03



यह बहुत कुछ चीजें बताता है - धन्यवाद। - anu
WTF यूनिक्स - BlueRaja