tar cvf या टार -cvf?


24

मैंने विकल्पों के लिए '-' के बिना टार का उपयोग करना सीख लिया है, जैसे कि tar cvfz dir.tar.gz Directory/लेकिन मैं हाल ही में थोड़ा अलग tar -czvfवाक्य विन्यास के पार आया (मुझे लगता है कि 'f' इस मामले में अंतिम विकल्प होना चाहिए)।

दोनों लिनक्स और मैक ओएस पर काम करते हैं। क्या अनुशंसित सिंटैक्स है, जिसमें a बिना '-' जो कि यूनिक्स फ्लेवर्स से अधिक पोर्टेबल है?


1
इसे भी देखें: unix.stackexchange.com/questions/13573/…
unor

-fअंतिम विकल्प क्यों होना चाहिए इसका कारण यह है कि यह एक तर्क लेता है और उस तर्क को विकल्प को स्पर्श करते हुए दिया जा सकता है। tar -cvfz dir.tar.gz Directoryइसका मतलब है zकि फ़ाइलों dir.tar.gzऔर शामिल एक संग्रह बनाने के लिए Directory
जोएल

जवाबों:


27

tarउन प्राचीन आदेशों में से एक है जब विकल्प सिंटैक्स को मानकीकृत नहीं किया गया था। क्योंकि tarकिसी भी फ़ाइल नाम प्रदान करने से पहले किसी ऑपरेशन को निर्दिष्ट करने के लिए सभी उपयोगी चालान की आवश्यकता होती है, अधिकांश tarकार्यान्वयन अपने पहले तर्क को एक विकल्प के रूप में व्याख्या करते हैं , भले ही वह किसी के साथ शुरू न हो -। अधिकांश वर्तमान कार्यान्वयन एक स्वीकार करते हैं -; एकमात्र अपवाद जो मुझे पता है कि मिनिक्स है

POSIX और सिंगल यूनिक्स के पुराने संस्करणों में ऑपरेशन स्पेसियर से पहले tarबिना कमांड वाली एक कमांड शामिल थी -। सिंगल यूनिक्स v2 में पारंपरिक आर्काइव cpioऔर दोनों थे tar, लेकिन बहुत कम झंडे को मानकीकृत किया जा सकता था क्योंकि मौजूदा कार्यान्वयन बहुत अलग थे, इसलिए मानकों ने एक नया कमांड पेश किया pax, जो कि सिंगल यूनिक्स v3 के बाद से एकमात्र मानक अभिलेखागार है । यदि आप मानक अनुपालन, उपयोग करना चाहते हैं pax, लेकिन सावधान रहें कि कई लिनक्स वितरण इसे अपने आधार स्थापना में शामिल नहीं करते हैं, और मिनिक्सpax में कोई भी नहीं है । यदि आप व्यवहार में पोर्टेबिलिटी चाहते हैं, तो उपयोग करें ।tar cf filename.tar



1
यह भी ध्यान दें कि यदि एक लिनक्स डिस्ट्रो होता है pax, तो यह आमतौर पर सबसे खराब ज्ञात पैक्स कार्यान्वयन (जीएनयू पैक्स) के साथ आता है जिसे कई बगों के कारण बचा जाना चाहिए।
शास्त्री

इसके अलावा, psकमांड का व्यवहार समान है, आप -विकल्पों के लिए छोड़ सकते हैं ।
प्रति

1
@ गलत यह गलत है। कई संस्करण psआपको छोड़ नहीं देते हैं -। लिनक्स संस्करण में विकल्प हैं और इसके बिना -, लेकिन अधिकांश के अलग-अलग अर्थ हैं (बीएसडी बनाम सिस्टम वी संगतता)।
गिल्स एसओ- बुराई को रोकना '

1
यह सच है कि, ज्यादातर समय, मैं केवल उपयोग करता हूं ps aux... इसलिए, मैं (आंशिक रूप से) गलत हो सकता हूं। माफ़ कीजिये।
प्रति

13

मैं एक डायनासोर हो सकता हूं, लेकिन मुझे लगता है कि आदतन "-cvf" के बजाय "cvf" का उपयोग करना शायद अधिक पोर्टेबल है। मुझे लगता है कि अधिकांश लिनक्स डिस्ट्रोस GNU टार का उपयोग करते हैं, और मुझे लगता है कि * BSDs भी करते हैं, लेकिन आपको मालिकाना यूनिक्स मिल जाएगा जो अभी भी पुराने SysV टार का उपयोग करते हैं, जो आपको विकल्पों में '-' का उपयोग नहीं करने की आवश्यकता होती थी

मैं "-cvf" (या "-xf" या जो भी) का उपयोग नहीं करता हूं और मुझे ब्लीड एज आर्क लिनेक्स से भी कोई परेशानी नहीं है।

और बस एक साइड नोट के रूप में, मुझे लगता है कि आप 'या' के बिना या साथ ही सन-स्टैंडर्ड "जार" कमांड विकल्पों का उपयोग कर सकते हैं।


मैं आपके उत्तर से सहमत हूं, भले ही टार का जानकारी पृष्ठ (जो निर्दिष्ट विकल्पों की तीन शैलियों के बारे में बहुत स्पष्ट है) बताता है कि पुराने विकल्प केवल संगतता के लिए रखे गए हैं और ऐसे विकल्पों का एक गुच्छा है जिनमें कोई पुराना पत्राचार नहीं है।
डेविड कोस्टा

1
आप गलत हैं: AT & T UNIX पर टार लिखा गया था कि इसमें कोई - नहीं है, लेकिन यह स्वीकार करता है - और इसे छोड़ देता है। टार को कॉल करने का एकमात्र पोर्टेबल तरीका इसे बिना कॉल करना है - और यदि आप कभी भी एक "टार" कार्यान्वयन पाते हैं जो बिना चीजों को स्वीकार नहीं करता है - यह टार नहीं है।
20

3

UNIX पर कुछ कार्यक्रम हुए हैं जो वर्तमान विकल्प मानक का पालन नहीं करते हैं।

एक है dd, लेकिन dd को IBM मेनफ्रेम प्रोग्राम DDR(डिस्क डंप एंड रिस्टोर) से लिया गया था ।

एक है arऔर दूसरा है tar। मेरी जानकारी से, टार आर के समान होना चाहता था।

सभी टार कार्यान्वयन बिना काम करते हैं - और किसी भी उपयोगी कार्यान्वयन की आवश्यकता नहीं है -। इसलिए यदि आप पोर्टेबल स्क्रिप्ट लिखना पसंद करते हैं, तो SUSv2 मानक की जांच करें और केवल एक कमांडलाइन का उपयोग करें जो SUSv2 के अनुकूल हो।

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