दिलचस्प पोस्ट
आईफोन ओपनजीएल ईएस उपकरण में टाइलर उपयोगिता का मतलब क्या है? Asp.net mvc कार्रवाई परिणाम ईमेल के अंदर भेजें AVAudioPlayer के लिए पहली बार एक ध्वनि खेला जाता है के लिए धीमी शुरुआत एरलांग में ट्रेस और डीबीजी का उपयोग करना हटाए जाने से पहले एक पुष्टिकरण संदेश कैसे दिखाना है? मैं बास में एक सरणी से अद्वितीय मान कैसे प्राप्त कर सकता हूं? सी + + हैडर फ़ाइलें, कोड पृथक्करण <main> तत्व इंटरनेट एक्सप्लोरर 11 में काम नहीं कर रहा है जावा के लिए सर्वश्रेष्ठ वेब अनुप्रयोग फ्रेमवर्क? कॉलम प्रकार सेट करने के लिए सभी ईएफ मॉडल में सभी गुणों के माध्यम से लूप / प्रतिबिंबित करें एंड्रॉइड स्टूडियो परियोजना संरचना (बनाम ईक्लिप्स परियोजना संरचना) लेनदेन के भीतर "GO" का उपयोग करना Android.gms.maps.MapFragment को प्रारंभ करने में असमर्थ क्या स्थानीय नेटवर्क में GAE dev ऐप सर्वर तक पहुंचने का कोई तरीका है? पायथन में एकल उद्धरण बनाम दोहरे उद्धरण

बश कमांड लाइन और इनपुट सीमा

क्या कुछ प्रकार की वर्ण सीमा (या अन्य गोले) में कितनी देर तक इनपुट हो सकता है? यदि हां, तो उस चरित्र की सीमा क्या है?

Ie क्या कमांड लाइन को निष्पादित करने के लिए बहुत कम समय में कमांड लाइन लिखना संभव है? यदि आवश्यक सीमा नहीं है, तो क्या कोई सुझाव सीमा है?

Solutions Collecting From Web of "बश कमांड लाइन और इनपुट सीमा"

कमांड लाइन की लंबाई की सीमा शैल द्वारा नहीं लगाई जाती है, लेकिन ऑपरेटिंग सिस्टम द्वारा। यह सीमा आमतौर पर सौ किलोबाइट की सीमा में है। POSIX इस सीमा को ARG_MAX और POSIX conformant सिस्टम को दर्शाता है जो आप इसे साथ क्वेरी कर सकते हैं

 $ getconf ARG_MAX # Get argument limit in bytes 

साइगविन पर उदाहरण यह 32000 है, और विभिन्न बीएसडी और लिनक्स सिस्टमों पर मैं इसका उपयोग 131072 से 2621440 तक कहीं है।

अगर आपको इस सीमा से अधिक फाइलों की सूची पर कार्रवाई करने की ज़रूरत है, तो आप xargs उपयोगिता को देखना चाह सकते हैं, जो ARG_MAX से अधिक नहीं की गई बहस के एक उप-समूह के साथ बार-बार एक कार्यक्रम कॉल करता है।

अपने विशिष्ट प्रश्न का उत्तर देने के लिए, हां, एक तर्क सूची के साथ एक आदेश को चलाने के लिए संभव है। शेल "संदेश की सूची बहुत लंबी" के साथ एक संदेश में त्रुटि होगी

ध्यान दें कि किसी प्रोग्राम में इनपुट (जैसा कि stdin या किसी अन्य फाइल डिस्क्रिप्टर पर पढ़ा गया है) सीमित नहीं है (केवल उपलब्ध प्रोग्राम संसाधनों द्वारा) इसलिए यदि आपकी शैल स्क्रिप्ट किसी स्ट्रिंग को किसी चर में पढ़ती है, तो आपको ARG_MAX द्वारा प्रतिबंधित नहीं किया ARG_MAX

ठीक है, डेनिज़ेंस इसलिए मैंने कुछ समय के लिए कमांड लाइन लंबाई की सीमा को सुसमाचार के रूप में स्वीकार किया है। तो, किसी की मान्यताओं के साथ क्या करना है? स्वाभाविक रूप से – उन्हें जांचें

मेरे पास मेरे निपटान पर एक फेडोरा 22 मशीन है (जिसका अर्थ है: लिनक्स के साथ बाश 4)। मैंने एक डायरेक्टरी बनाई है जिसमें 500,000 इनोड्स (फाइलें) के साथ 18 अक्षरों में से प्रत्येक में लंबा है कमांड लाइन की लंबाई 9, 500,000 वर्ण हैं। इस प्रकार बनाया गया:

 seq 1 500000 | while read digit; do touch $(printf "abigfilename%06d\n" $digit); done 

और हम ध्यान दें:

 $ getconf ARG_MAX 2097152 

हालांकि मैं यह कर सकता हूं:

 $ echo * > /dev/null 

लेकिन यह विफल रहता है:

 $ /bin/echo * > /dev/null bash: /bin/echo: Argument list too long 

मैं लूप के लिए चला सकता हूँ:

 $ for f in *; do :; done 

जो कि एक अन्य शेल निर्मित है

ARG_MAX के लिए दस्तावेज की सावधानीपूर्वक पढ़ना, ARG_MAX कार्यों के लिए तर्क की अधिकतम लंबाई । इसका मतलब है: exec कॉल किए बिना, कोई ARG_MAX सीमा नहीं है इसलिए यह समझाता है कि शेल ARG_MAX द्वारा क्यों प्रतिबंधित नहीं हैं।

और वास्तव में, मैं अपनी निर्देशिका को ले सकता हूं अगर मेरी तर्क सूची 109948 फाइलें लंबे, या लगभग 2,08 9, 000 अक्षर (दे या ले)। एक बार मैं एक और 18-वर्ण फ़ाइल नाम फ़ाइल जोड़ता हूं, हालांकि, मुझे एक तर्क सूची बहुत लंबी त्रुटि मिलती है। इसलिए ARG_MAX विज्ञापित के रूप में काम कर रहा है: तर्क तर्क सूची पर ARG_MAX वर्णों से अधिक के साथ ARG_MAX हो रहा ARG_MAX इसमें ध्यान दिया जाना चाहिए, पर्यावरण डेटा।