मैन पेजों का अनुभाग शीर्षक पूरी तरह से संक्षिप्त क्यों नहीं हैं?


14

यह एल Capitan में और एक सहयोगी के उच्च सिएरा में मानक टर्मिनल (बैश) में परीक्षण किया गया था।

user@hostname ~ $ man ls | grep "BU"
BUGS
user@hostname ~ $ man ls | grep "BUG"
user@hostname ~ $ 
user@hostname ~ $ man ls | grep "IEEE"
     files in order to be compatible with the IEEE Std 1003.2 (``POSIX.2'')
     The ls utility conforms to IEEE Std 1003.1-2001 (``POSIX.1'').

स्पष्ट करने के लिए: "BUGS" उस (और विभिन्न अन्य) मैनपेजों में एक अनुभाग शीर्षक है। अनुभाग शीर्षकों के लिए, केवल 2 वर्णों के लिए काम करना अच्छा लगता है; यह हमारे द्वारा किए गए कुछ अलग-अलग अनुभागों के अनुरूप है। बाकी सामग्री के लिए, grepअपेक्षित रूप से काम करने लगता है।

मैं एक गैर-बीएसडी फ्लेवर्ड लिनक्स बॉक्स (अमेज़ॅन लिनक्स) में ssh'd हूं और यह समान व्यवहार प्रदर्शित करने के लिए प्रकट नहीं होता है।

यहाँ क्या चल रहा है?


यह इस कारण का कारण है कि मुझे बीएसडी मैन से नफरत है। यह टेक्स्ट को फॉर्मेट करता है और पेजर तब भी चलाता है जब उसका आउटपुट पाइप होता है। और मेरा पेजर विम है, इसलिए लिनुस ने मुझे कभी मना किया man foo | grep bar, मुझे एक गैर-जिम्मेदार पाइपलाइन मिलती है (और शायद एक गड़बड़ टर्मिनल को बूट करने के लिए)। : / मैंडब मैन , जो आप आमतौर पर लिनक्स पर देखते हैं, वह अधिक समझदार है।
मुरु

unix.stackexchange.com/questions/371062 भी एक MacOS प्रश्न है।
JdeBP

जवाबों:


15

आप देख सकते हैं कि क्या हो रहा है यदि आप एक मैन पेज के भीतर कच्चे कोड देखते हैं। ऐसा करने का एक तरीका यह है कि मैन पेज को एक फ़ाइल में निर्यात किया जाए और उसकी सामग्री का सीधे निरीक्षण किया जाए:

man ls > man.ls
nano man.ls

शब्द "BUGS" वास्तव में इस तरह दिखता है:

B^HBU^HUG^HGS^HS

आप देखेंगे कि शीर्षलेखों में प्रारूपण वर्ण हैं, इसलिए संपूर्ण शब्द "BUGS" मौजूद नहीं है।


यदि आप मैनुअल पेज की प्लेटेक्स्ट सामग्री का उपयोग करना चाहते हैं, तो आप कमांड का उपयोग कर सकते हैं

man -P cat <thepage>

-Pविकल्प अन्य यूनिक्स पर पेजर सेट करता है और catस्वरूपण जानकारी पर ध्यान नहीं देगा, एक प्लेन टेक्स्ट उत्पादन दे रही है। हालाँकि, यह macOS पर काम नहीं करता है, इसलिए आउटपुट col -bको पाइप लाइन में मैन्युअल स्टेप की आवश्यकता होती है :

man ls | col -b | grep BUGS

2
धन्यवाद स्कॉट! एक फ़ाइल में रीडायरेक्ट करना और एक टेक्स्ट एडिटर को खोलना पहली चीज़ होनी चाहिए जो मैंने कोशिश की थी। उस जानकारी का उपयोग करना, और unix.stackexchange.com/a/15866 (यानी man ls | col -b | grep "BUGS") की जानकारी से मैं वह प्राप्त कर सका जो मैं चाहता था।
जोनाथन मर्कलिन

7
पवित्र मोली, बोल्ड पुरानी TTY और टाइपराइटर युग है, एक पत्र और बैकस्पेस टाइप करें और फिर से पत्र टाइप करें, यह जानते हुए कि वे पूरी तरह से लाइन नहीं करेंगे और अधिक स्याही जमा करेंगे। वहाँ एक हो गया है nroffअनुवाद करने के लिए है कि अगर आप की जरूरत है आदेश grep आप बुरा होगा अगर मैं कैसे करने के लिए सही आदेश पारित करने के लिए के साथ इस विस्तार - groffके माध्यम से man?
bmike

@Kroltan +10 और +10 के रूप में अच्छी तरह से स्कॉट करने के लिए। इस तरह से यह और अधिक सुरुचिपूर्ण है कि मैं इस विशेष बिल्ली को चमचमाते हुए कैसे नहीं सोच रहा था।
bmike

@ क्रोल्टन हम्म - मेरे लिए, man -P cat ls | grep BUGSपहचान के लिए काम करता है man ls | grep BUGS, दोनों कुछ भी नहीं लौटाते हैं।
स्कॉट

1
GNU रॉफ़ को नियोजित करने वाले मैनुअल सिस्टम के लिए, वास्तव में विकल्प हैं grottyजो इसे TTY-37 या ECMA48 नियंत्रण अनुक्रमों को छोड़ने से रोकेंगे।
JdeBP
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.