আমি ছেড়ে যাওয়ার পরে কীভাবে আমি মানুষের কাছ থেকে পড়া বিষয়বস্তু রাখতে পারি?


24

সুতরাং আমরা কমান্ড man whateverসম্পর্কিত ব্যবহার এবং অন্যান্য তথ্য পেতে ব্যবহার করি whatever, যখন তথ্যের প্রাসঙ্গিক বিভাগটি পাওয়া যায়, আমি manপর্দায় থাকা তথ্যটি রেখে কমান্ডটি ছাড়তে চাই । সুতরাং আমি উপরের রেফারির সাথে পরবর্তী কমান্ডটি টাইপ করতে পারি। কিন্তু manকমান্ডটি পুরানো স্ক্রিনের অনুরূপ পুনরুদ্ধার করতে পুরো স্ক্রিনটি ছেড়ে দেয় vim। এই অর্জন করার জন্য একটি উপায় আছে কি?



সমস্ত পরামর্শগুলি ভাল, তবে আপনি ম্যান পৃষ্ঠাটি দেখতে দ্বিতীয় উইন্ডোটিও খুলতে পারেন। এবং সম্ভবত জিইউআই ম্যান পেজ দর্শকও রয়েছে।
বার্মার

উত্তর:


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
@ মুসিকেক: আপনি পেজারটি বের করার পরে যদি ম্যান পৃষ্ঠাতে ফিরে স্ক্রোল করতে সক্ষম হতে চান তবে আপনাকে নিজেকে সাধারণ পাতায় (লাইন বা পৃষ্ঠায়) স্ক্রোলিংয়ের মধ্যে সীমাবদ্ধ রাখতে হবে, সাধারণ র্যান্ডম অ্যাক্সেস নয় not
পিটার কর্ডেস

1
বা আপনি ব্যবহার করতে পারেন LESS=-X, পরিবর্তন এড়াতে PAGER(100% এটির মতো জায়গা নিয়ে সমস্ত প্রোগ্রামে কাজ করার জন্য এটির উপর আমি বিশ্বাস করি না, যদিও এটি মানুষের মধ্যে কাজ করে))
র্যান্ডম 832

11

আপনি যদি নিজের পেজার হিসাবে কম চলতে থাকেন (যা খুব সাধারণ) তবে আপনার পেজারকে সংশোধন করার দরকার নেই, কেবল I / O পুনঃনির্দেশ:

man <whatever you want to man> | cat -

এটি টার্মিনালে একটি অনুলিপি মুদ্রণ করবে যাতে আপনার যখন প্রয়োজন হয় তখন আপনি স্ক্রোল করতে পারেন।


1
এই পদ্ধতির সাথে একটি সমস্যা হ'ল দীর্ঘ ম্যানুয়াল পৃষ্ঠাগুলি সহ আপনার আগ্রহের অংশে ফিরে স্ক্রোল করা কঠিন হতে পারে এবং আপনি সেই অংশ এবং বর্তমান কমান্ড লাইন উভয়ই দেখতে পাবেন না।
jlliagre

অন্য কোনও পরামর্শই এই সমস্যাটি কাটিয়ে উঠেনি - এটি কেবলমাত্র একটি একক কনসোল উইন্ডোতে অন্তর্নিহিত। তবে এটি দিয়ে আপনি সর্বদা আপনার কমান্ডটি লিখতে পারেন, কিছুটা স্ক্রোল করতে পারেন এবং স্ক্রোলটি আপনার অর্ধেক লিখিত কমান্ডে ফিরে যেতে পারেন।
ব্রেনেন স্মিথ

আমার পরামর্শ অবশ্যই এই সমস্যাটি কাটিয়ে উঠবে। ম্যানুয়াল পৃষ্ঠাটি যখন আপনি আগ্রহী সেই ম্যানুয়াল পৃষ্ঠাটি যখন আপনি পর্দায় আগ্রহী এবং আপনি একই পর্দায় দৃশ্যমান সেই পৃষ্ঠাটি দিয়ে আপনার কমান্ডটি টাইপ করতে পারেন।
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
@ বিড়ালটি নয় যে আমি যে কোনও বিদ্যমান পরীক্ষা করেছি, তবে এই কর্মসূচিটি ব্যবহার করার পরে আমি অন্যান্য প্রোগ্রামগুলির সাথে কোনও সমস্যা লক্ষ্য করিনি। আপনার কাছে এমন প্রোগ্রাম রয়েছে যা অদ্ভুত আচরণ করবে? তারা যদি ব্যর্থ হয় তবে আমার সন্দেহ হয়, এটি তাদের পক্ষে একটি সমস্যা। একটি টার্মিনাল এমুলেটর সেখানে প্রতিটি টার্মিনফো দক্ষতার সমর্থন করার কথা নয়। এটি কেবল বিজ্ঞাপন দেয় যেগুলি এটি সমর্থন করে এবং এটি মোকাবেলা করার জন্য অ্যাপ্লিকেশনটির উপর নির্ভর করে।
jlliagre

3

আপনি আউটপুটটি catকমান্ডটিতে পাইপ করতে পারেন

man man|cat

বা ডিফল্ট পেজারের পরিবর্তে এটি ব্যবহার করুন, যেমন এই উদাহরণে যা মানুষকে নিজেই ডাকে:

PAGER=cat man man

2

পেজার পরিবর্তন না করেই পাইপগুলির সাথে একটি সমাধান যা বেশিরভাগ পরিবেশে কাজ করতে পারে:

উদাহরণস্বরূপ man ls

  • পুরো ম্যান পৃষ্ঠাটি স্ক্রিনে ছেড়ে দিনman ls | cat
  • এটিকে যে কোনও সময় q দিয়ে রেখে যাওয়ার সম্ভাবনা সহ একটি পৃষ্ঠাযুক্ত ম্যান আউটপুট পড়ুন :man ls | more
  • একটি প্যাটার্ন সহ ম্যান সামগ্রীগুলি ফিল্টার করুন এবং স্ক্রিনে মিলিত লাইনগুলি রাখুন:man ls | grep somestring

-3

এটি ২০১ 2016, কেবলমাত্র দ্বিতীয় টার্মিনাল বা ট্যাব বা উইন্ডো খুলুন বা লোকটিকে অনলাইনে পড়ুন ..


এবং এটি সুস্পষ্ট ব্যবহারিক সমাধান।
ব্রায়াম

1
@ ব্রায়াম যদি টার্মিনালটি মোবাইল ফোনের স্ক্রিনে থাকে তবে ব্যবহারিক নয়।
নাথানাইল ক্যাপিটাল

@ নাথানাইল ক্যাপিটাল মতামত tmux শেখার সময় মত।
মাইকেল হ্যাম্পটন

-3

এমনকি আমার সার্ভারে (ফ্রিবিএসডি) আমি এক্স এবং এক্সফেস ইনস্টল করি। তারপরে আমি টার্মিনাল এমুলেটরগুলির জন্য একটি বড় বাফার (উদাঃ 10 000 লাইন) বরাদ্দ করি যাতে আমি তাদের মধ্যে ম্যান পৃষ্ঠাটি সম্পূর্ণরূপে স্ক্রোল করতে পারি এবং কমান্ডটি একত্রিত করতে একটি পৃথক টার্মিনাল উদাহরণ ব্যবহার করতে পারি। একটি ট্রিট কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.