यदि आप गैर-मुद्रण योग्य वर्णों को दिखाने के | sed -n l
लिए उस tail
आदेश में एक जोड़ते हैं , तो आपको संभवतः कुछ दिखाई देगा:
N\bNA\bAM\bME\bE
यही है, प्रत्येक चरित्र को X
बैकस्पेस के रूप में लिखा गया है X
। आधुनिक टर्मिनलों पर, चरित्र खुद के ऊपर लिखा जा रहा है (जैसा कि बैकस्पेस उर्फ बीएस उर्फ \b
उर्फ ^H
चरित्र है जो बिना किसी अंतर के कर्सर को एक कॉलम बाईं ओर ले जाता है)। लेकिन प्राचीन टेली-टाइपराइटरों में, यह चरित्र को बोल्ड में प्रदर्शित करने का कारण बनता है क्योंकि यह दो बार स्याही के रूप में मिलता है।
फिर भी, पेजर बोल्ड को समझने के लिए उस प्रारूप को पसंद करते हैं more
/ less
करते हैं, इसलिए अभी भी roff
बोल्ड टेक्स्ट का उत्पादन करना है।
कुछ पुरुष कार्यान्वयन इस तरह से कॉल करेंगे roff
कि उन अनुक्रमों का उपयोग नहीं किया जाता है (या आंतरिक रूप col -b -p -x
से उन्हें पट्टी करने के लिए कॉल करें जैसे कि man-db
कार्यान्वयन के मामले में (जब तक कि MAN_KEEP_FORMATTING
पर्यावरण चर सेट नहीं किया जाता है), और आउटपुट का पता लगाने पर पेजर को आमंत्रित न करें। एक टर्मिनल पर नहीं जा रहा है (इसलिए man bash | grep NAME
वहां काम करेगा), लेकिन आपका नहीं।
आप col -b
उन दृश्यों को हटाने के लिए उपयोग कर सकते हैं ( अंडरलाइन के लिए अन्य प्रकार ( _
बीएस X
) और साथ ही) हैं।
जीएनयू का उपयोग कर सिस्टम के लिए roff
(जीएनयू या FreeBSD) की तरह, आप उन दृश्यों सुनिश्चित करते हुए पहली जगह में इस्तेमाल किया जा रहा से बचने कर सकते -c -b -u
विकल्प को पास किया जाता grotty
सुनिश्चित करते हुए उदाहरण के लिए, -P-cbu
विकल्प के लिए पारित कर दिया है groff
।
उदाहरण के लिए एक आवरण लिपि बनाकर, जिसे कहा जाता है groff
:
#! /bin/sh -
exec /usr/bin/groff -P-cbu "$@"
कि आपने / usr / bin / groff के आगे रखा $PATH
।
MacOS के साथ ' man
(GNU का उपयोग करके roff
), आप एक के man-no-overstrike.conf
साथ बना सकते हैं :
NROFF /usr/bin/groff -mandoc -Tutf8 -P-cbu
और कॉल करें man
:
man -C man-no-overstrike.conf bash | grep NAME
जीएनयू के साथ फिर भी roff
, यदि आप GROFF_SGR
पर्यावरण चर निर्धारित करते हैं (या GROFF_NO_SGR
संकलन समय पर कैसे चूक को निर्धारित किया गया है) के आधार पर चर सेट नहीं करते हैं , तो grotty
(जब तक कि यह -c
विकल्प पारित नहीं होता है) एएनएसआई एसजीआर टर्मिनल एस्केप सीक्वेंस का उपयोग करेगा चरित्र विशेषताओं के लिए उन बी एस चाल के। विकल्प के less
साथ बुलाए जाने पर उन्हें समझें -R
।
FreeBSD का आदमी तब तक विकल्प के grotty
साथ कॉल करता -c
है जब तक कि आप MANCOLOR वैरिएबल सेट करके रंग नहीं पूछ रहे हैं (जिसमें एएनएसआई SGR एस्केप सीक्वेंस का उपयोग करने के लिए डिफ़ॉल्ट रूप से -c
पास नहीं होता है grotty
और grotty
वापस लौटता है)।
MANCOLOR=1 man bash | grep NAME
वहां काम करेंगे।
डेबियन पर, GROFF_SGR डिफ़ॉल्ट नहीं है। यदि तुम करो:
GROFF_SGR=1 man bash | grep NAME
हालाँकि, क्योंकि man
stdout एक टर्मिनल नहीं है, यह अपने आप में एक GROFF_NO_SGR
चर भी पास कर लेता है grotty
(मुझे लगता है कि यह col -bpx
बीएस दृश्यों को स्ट्रिप करने के लिए उपयोग कर सकता है क्योंकि col
यह नहीं जानता कि एसजीआर अनुक्रमों को कैसे छीनना है, हालांकि यह अभी भी है यह करता है MAN_KEEP_FORMATTING
) जो हमारे ऊपर हावी है GROFF_SGR
। आप इसके बजाय कर सकते हैं:
GROFF_SGR=1 MANPAGER='grep NAME' man bash
(एक टर्मिनल में) एसजीआर से बचने के क्रम के लिए।
उस समय, आप देखेंगे कि उनमें से कुछ NAME टर्मिनल पर (और एक less -R
पेजर में) बोल्ड दिखाई देते हैं । यदि आप आउटपुट sed -n l
( MANPAGER='sed -n /NAME/l'
) को खिलाते हैं , तो आपको कुछ ऐसा दिखाई देगा:
\033[1mNAME\033[0m$
\e[1m
एएनएसआई संगत टर्मिनलों में बोल्ड को सक्षम करने के लिए अनुक्रम कहां है, और \e[0m
डिफ़ॉल्ट पर सभी एसजीआर विशेषताओं को वापस करने का अनुक्रम है।
उस पाठ पर grep NAME
काम करता है जिसमें वह पाठ सम्मिलित है NAME
, लेकिन आपको अभी भी समस्या हो सकती है यदि पाठ की तलाश में जहां उसके कुछ भाग बोल्ड / कमतर हों ...