मैं उस सामग्री को कैसे रख सकता हूं जो मैंने छोड़ने के बाद आदमी से पढ़ रहा था?


24

इसलिए हम कमांड के man whateverबारे में उपयोग और अन्य जानकारी प्राप्त करने के लिए उपयोग करते हैं whatever, जब जानकारी का प्रासंगिक अनुभाग पाया जाता है, तो मैं manस्क्रीन पर छोड़ी गई जानकारी के साथ कमांड को छोड़ना चाहूंगा । तो मैं ऊपर रेफरी के साथ अगले कमांड टाइप कर सकता हूं। लेकिन manकमांड पुरानी स्क्रीन को ठीक करने के लिए पूरे स्क्रीन को क्विट करता है vim। क्या इसको हासिल करने के लिए कोई रास्ता है?


संबंधित: serverfault.com/questions/84534/…

सभी सुझाव अच्छे हैं, लेकिन आप मैन पेज देखने के लिए सिर्फ दूसरी विंडो खोल सकते हैं। और शायद GUI मैन पेज व्यूअर भी हैं।
बरमार

जवाबों:


38

मेरा मानना ​​है कि यह manअपने बारे में इतना नहीं है, बल्कि PAGERउपयोग में टर्मिनल के साथ संयुक्त आपकी पसंद ( पर्यावरण चर) के बारे में है।

मैं अनुमान लगा रहा हूं कि आपका पेजर शायद less(आजकल सामान्य डिफ़ॉल्ट पेजर है और विवरण के साथ फिट बैठता है)।

lessएक विकल्प है -Xकि आप क्या आप के लिए देख रहे हैं की तर्ज पर एक व्यवहार मिल सकता है।

   -X or --no-init
          Disables sending the termcap initialization and deinitialization
          strings  to  the  terminal.   This is sometimes desirable if the
          deinitialization string does something unnecessary, like  clear‐
          ing the screen.

उदाहरण के PAGER="less -X" man manलिए इसका परीक्षण किया जा सकता है, और यदि आपको यह व्यवहार बेहतर लगता है तो आप PAGERइस मान को स्थायी रूप से स्थापित करने पर विचार कर सकते हैं ।


दुर्भाग्य से यह स्क्रॉल इतिहास को गड़बड़ कर देता है।
मुशीक

@musiKk उबंटू 16.04 पर मेरे लिए एक स्मार्ट यूनिकोड टर्मिनल (लिनक्स कंसोल नहीं) और आदमी 2.7.5 के साथ ठीक काम करता है
बिल्ली

3
@musiKk: यदि आप पेजर से बाहर निकलने के बाद मैन पेज पर वापस स्क्रॉल करना चाहते हैं, तो आपको अपने आप को मैन पेज (लाइनों या पृष्ठों द्वारा) में स्क्रॉल करने के लिए सीमित करना होगा, सामान्य रैंडम एक्सेस नहीं।
पीटर कॉर्ड्स

1
या आप उपयोग कर सकते हैं LESS=-X, बदलने से बचने के लिए PAGER(मैं 100% पर भरोसा नहीं करता कि यह सभी कार्यक्रमों में काम कर सकता है जैसे कि अंतरिक्ष में, हालांकि यह आदमी में काम करता है।)
Random832

11

यदि आप अपने पेजर के रूप में कम चल रहे हैं (जो बहुत सामान्य है), तो आपको अपने पेजर को संशोधित करने से निपटने की आवश्यकता नहीं है, बस I / O को पुनर्निर्देशित करें:

man <whatever you want to man> | cat -

यह टर्मिनल को एक कॉपी प्रिंट करेगा ताकि आप इसे ज़रूरत पड़ने पर स्क्रॉल कर सकें।


1
इस दृष्टिकोण के साथ एक मुद्दा यह है कि लंबे मैनुअल पृष्ठों के साथ, आपके लिए ब्याज के हिस्से को वापस स्क्रॉल करना मुश्किल हो सकता है और आप उस हिस्से और वर्तमान कमांड लाइन दोनों को नहीं देखेंगे।
जलीगेरे

अन्य सुझावों में से कोई भी इस मुद्दे को दूर नहीं करता है - यह केवल एक कंसोल विंडो में अंतर्निहित है। लेकिन यह कहा कि आप हमेशा अपनी कमांड लिख सकते हैं, थोड़ा ऊपर स्क्रॉल कर सकते हैं, और स्क्रॉल वापस अपने आधे लिखित कमांड पर कर सकते हैं।
ब्रेनन स्मिथ

मेरा सुझाव निश्चित रूप से इस मुद्दे को दूर करता है। आप मैन कमांड तब छोड़ते हैं जब मैनुअल पेज जो आपकी स्क्रीन पर रुचि रखता है और आप उसी स्क्रीन पर दिखाई दे रहे पेज के साथ अपनी कमांड टाइप कर सकते हैं।
२१:१re पर jlliagre

2
-मानक को इंगित करता है, लेकिन catमान लेता है कि वैसे भी
loa_in_

1
यह ज्यादातर शब्दार्थ के लिए है - मैं हमेशा स्टड के साथ स्पष्ट होना पसंद करता हूं।
ब्रेनन स्मिथ

5

न केवल के रूप में, lessबल्कि अन्य पाठ अनुप्रयोग भी vimउसी कष्टप्रद विशेषता को प्रदर्शित करते हैं, जो मैं करता हूं वह बस terminfoडेटाबेस से शामिल कमांड का समर्थन करने के लिए टर्मिनल की क्षमता को हटा रहा है ।

ये कमांड हैं smcupऔर rmcup, जिन्हें स्विच ऑन करने की अनुमति देने के लिए डिज़ाइन किया गया था और जहां cupकमांड (कर्सर की स्थिति) की अनुमति दी गई थी।

यहाँ एक शेल फ़ंक्शन है जिसका उपयोग मैंने कार्य को स्वचालित करने के लिए किया है, यह कम से कम सोलारिस और संभवतः अधिकांश लिनक्स वितरणों के साथ काम करता है:

fixterminfo()
{
  (
    [[ ! -d /tmp/terminfo ]] && { mkdir /tmp/terminfo || return ; }
    cd /tmp/terminfo || return
    TERM=xterm infocmp > xterm.src.org
    sed -e 's/rmcup=[^,]*,//'  -e 's/smcup=[^,]*,//' xterm.src.org > xterm.src
    if diff xterm.src.org xterm.src
    then
      echo xterm terminfo already patched
      return
    fi
    TERMINFO=/tmp/terminfo tic xterm.src
    if [ -f /usr/share/lib/terminfo/x/xterm ] ; then
      XTERM=/usr/share/lib/terminfo/x/xterm
    else
      if [ -f /lib/terminfo/x/xterm ] ; then
        XTERM=/lib/terminfo/x/xterm
      else
        if [ -f /usr/share/terminfo/x/xterm ] ; then
          XTERM=/usr/share/terminfo/x/xterm
        else
          echo xterm terminfo not found ; return
        fi
      fi
    fi
    if [ ! -f ${XTERM}.org ]
    then
      sudo cp ${XTERM} ${XTERM}.org || return
    fi
    cat /tmp/terminfo/x/xterm | sudo dd of=${XTERM}
  )
}

यदि आपकी टर्मिनल प्रविष्टि में कोई कमी नहीं है xterm, तो आपको xtermस्क्रिप्ट में सही टर्मिनल नाम से प्रतिस्थापित करना चाहिए ।


1
हाँ, लेकिन फिर यह अन्य कार्यक्रमों को तोड़ता है (जरूरी नहीं कि पेजर्स या शाप, लेकिन रीडलाइन जैसे संपादकों आदि)
बिल्ली

1
@ यह नहीं है कि मैंने किसी भी मौजूदा को चेक किया है, लेकिन मैंने इस वर्कअराउंड का उपयोग करने के बाद कभी भी अन्य कार्यक्रमों के साथ कोई समस्या नहीं देखी। क्या आपके पास ऐसे कार्यक्रमों के उदाहरण हैं जो अजीब तरह से व्यवहार करेंगे? मुझे संदेह है कि अगर वे असफल होते हैं, तो यह उनकी तरफ से एक मुद्दा है। एक टर्मिनल एमुलेटर वहाँ बाहर हर टर्मोफ़ क्षमता का समर्थन करने वाला नहीं है। यह सिर्फ विज्ञापन करता है कि यह किन लोगों का समर्थन करता है और इससे निपटने के लिए आवेदन पर निर्भर है।
जूलियरे

3

आप आउटपुट को catकमांड पर पाइप कर सकते हैं

man man|cat

या डिफ़ॉल्ट पेजर के बजाय इसका उपयोग करें, जैसा कि इस उदाहरण में है जो मनुष्य को स्वयं पर आमंत्रित करता है:

PAGER=cat man man

2

पेजर को संशोधित किए बिना, पाइपों के साथ एक समाधान जो अधिकांश वातावरण में काम कर सकता है:

के उदाहरण हैं man ls

  • स्क्रीन में पूरे मैन पेज को छोड़ देंman ls | cat
  • क्यू के साथ किसी भी समय इसे छोड़ने की संभावना के साथ एक पृष्ठांकित मानव आउटपुट पढ़ें :man ls | more
  • मैन कंटेंट को एक पैटर्न के साथ फ़िल्टर करें और स्क्रीन में लाइनों को मिलाते रहें:man ls | grep somestring

-3

यह 2016 है, बस एक दूसरा टर्मिनल या टैब या विंडो खोलें या ऑनलाइन आदमी को पढ़ें ।।


और यह स्पष्ट व्यावहारिक समाधान है।
ब्रिअम

1
@ ब्रायम व्यावहारिक नहीं है यदि टर्मिनल मोबाइल फोन स्क्रीन पर है।
नेथेनिलकैपिटल

@NathaneilCapital यह लगता है कि यह सीखने का समय है।
माइकल हैम्पटन

-3

यहां तक ​​कि मेरे सर्वर (FreeBSD) पर भी मैं X और xfce स्थापित करता हूं। फिर मैं टर्मिनल एमुलेटर के लिए एक बड़ा बफर (उदाहरण के लिए 10 000 लाइनें) आवंटित करता हूं ताकि मैं उनमें से एक में मैन पेज को पूरी तरह से स्क्रॉल कर सकूं और कमांड को इकट्ठा करने के लिए एक अलग टर्मिनल उदाहरण का उपयोग कर सकूं। एक इलाज करता है।

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