Cp के पास wget जैसी प्रगति पट्टी क्यों नहीं है?


55

कृपया ध्यान दें कि मैं नहीं पूछता कि कैसे । मैं पहले से ही जैसे विकल्प पता pvऔर rsync -P

मैं पूछना चाहता हूं कि एक प्रगति पट्टी को कम से कम ध्वज के रूप में लागू क्यों नहीं cpकिया जाता है?


7
कैसे के बारे में "लेखक इसके लिए आवश्यकता महसूस नहीं करता है"?
फुनेहे

7
जो पाठक नहीं जानते हैं pvऔर rsync -P, प्रगति बार वाली फ़ाइलों को देखें ( उत्तर में से एक पैच का हवाला देता है cpताकि cp -gप्रगति सूचक हो)।
गिलेस एसओ- बुराई को रोकना '

2
पूछने के लिए एक बेहतर जगह नई (2010 के बाद से) के आधार पर होगी उपयोगकर्ता मेलिंग सूची।
फहीम मीठा

जवाबों:


57

यूनिक्स टूल्स में परंपरा केवल संदेशों को प्रदर्शित करने के लिए है अगर कुछ गलत हो जाता है। मुझे लगता है कि यह दोनों डिजाइन और व्यावहारिक कारणों से है। डिज़ाइन का उद्देश्य यह स्पष्ट करना है कि जब कुछ गलत होता है: आपको एक त्रुटि संदेश मिलता है, और यह वास्तव में सूचनात्मक संदेशों में नहीं डूबता है। व्यावहारिक कारण यह है कि यूनिक्स के शुरुआती दिनों में, अभी भी टेलीप्रिंटर्स थे ; यही है, कार्यक्रमों से आउटपुट कागज पर मुद्रित किया जाएगा, और आप प्रगति सलाखों को मुद्रित नहीं करना चाहते हैं।

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


6
इस। और cp1970 के दशक की शुरुआत में वापस चला गया: यह उतना ही पारंपरिक है जितना कि आपको मिल सकता है।
dmckee

3
@ मॉर्की फिर ddप्रगति के बयान क्यों दे सकते हैं? dd1966 (OS / 360) पर वापस जाता है। यदि उपयोगकर्ता उन्हें क्रिया करना चाहते हैं, तो यूनिक्स उपकरण क्रिया हो सकते हैं, लेकिन दुर्भाग्य से आप यह नहीं कह सकते कि क्रिया cp कैसे होगी (केवल एक अतिरिक्त क्रिया-स्तर है:) -v
तफ़र

7
@taffer ddकई मायनों में अजीब है (सबसे स्पष्ट रूप से, इसका विकल्प वाक्य रचना) क्योंकि यह यूनिक्स से नहीं है, यह एक आईबीएम उपकरण का एक क्लोन है। इसके अलावा, यह ज्यादातर टेपों पर लंबे कार्यों के लिए उपयोग किया जाता था, इसलिए इसके संदेशों ने आपको अपने ब्रेक से वापस आने के लिए कहा था, इसके विपरीत cpजहां ज्यादातर मामलों में आप पलक झपकते ही वापस आ जाएंगे।
गिलेस एसओ-

16

यूनिक्स दुनिया में, प्रत्येक उपकरण को एक काम करने और इसे अच्छी तरह से करने के लिए डिज़ाइन किया गया है। cpजब दूसरा उपकरण pvपहले से ही ऐसा है तो आउटपुट की प्रगति के बारे में चिंता क्यों होगी ? एक ही नस में, इतने सारे कार्यक्रम स्क्रीन पर सामान को बिना किसी पृष्ठ पर डंप किए क्यों करते हैं? क्योंकि उस काम के लिए पहले से ही उपकरण मौजूद हैं जैसे more(या less)। अधिकांश प्रोग्राम जो फ़ाइलों के संपादन की आवश्यकता होती है, वे आपको एक संपादक के रूप में प्रस्तुत नहीं करते हैं और इसके बजाय आउटसोर्स करते $EDITORहैं? क्योंकि वह हर उस कार्य को करना छोड़ देता है जिसे वे करने के लिए डिज़ाइन किए गए थे, और उपयोगकर्ता सभी कार्यों के लिए अपने पसंदीदा संपादक का उपयोग कर रहा था।

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

हमेशा अपने इच्छित प्रभाव को पूरा करने के लिए उपकरणों को संयोजित करने की अपेक्षा करें।


3
क्या लिखा था pvजब मौजूद cpथा? यह एक अच्छा बिंदु है, लेकिन मुझे लगता है कि इस मामले में, cpमूल रूप से जानबूझकर प्रगति आउटपुट के बिना लिखा गया था, अन्य उपकरणों के साथ कुछ नहीं करना है, बस अन्य कारणों से आप और गाइल्स का हवाला देते हैं।
कैस्केबेल

1
@ जेफ्रोमी: मुझे यकीन नहीं है कि यह मायने रखता है। यह एक ऐतिहासिक प्रश्न क्यों नहीं है कि cpजब इसे पहली बार कोड किया गया था तो एक रास्ता क्यों था। सवाल यह है कि अब ऐसा क्यों है ? बहुत साल हो गए हैं और किसी ने कार्यक्षमता को जोड़ा हो सकता है, लेकिन स्पष्ट रूप से तय नहीं किया है। मुझे यकीन है कि उस निर्णय में अन्य उपकरण कारकों की उपलब्धता है।
कालेब

3

यह उन सीमांत चीजों में से एक है जहां cp के लिए प्रगति बार विकल्प जोड़ने के लिए तर्क और विरुद्ध हैं। के खिलाफ मुख्य तर्क यह है कि आप समय से पहले नहीं जान सकते हैं कि आप प्रगति जानना चाहते हैं। Ctrl-T / SIGINFO इस उद्देश्य के लिए BSD पर उपलब्ध है, और यदि वह GNU / Linux प्लेटफॉर्म पर उपलब्ध हो जाता है, तो इसके लिए और अधिक कारण हो सकते हैं कि cp में प्रगति बार तर्क को ट्रिगर किया जाए। इस बीच , सिस्टम पर किसी भी प्रक्रिया की स्थिति प्रदर्शित करने के लिए कोरुटिल्स प्रोग्रेस व्यूअर (जैसे progress, पूर्व में पता cv) जैसे एक अलग उपकरण का उपयोग करने के लिए एक अधिक सामान्य समाधान है ।

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