স্ক্রোলব্যাক এবং স্ক্রোলব্যাক বাফার আসলে কী?


23

"স্ক্রলব্যাক" এবং "স্ক্রলব্যাক বাফার" মত প্রোগ্রামে কি কি bashএবং screenপ্রোগ্রাম চালানো হচ্ছে, এবং তারা TTY কিভাবে কহা না, এবং stdin / stdout- এ / দ্বারা stderr?

এখানে এখন পর্যন্ত পাওয়া "স্ক্রোলব্যাক" এর একমাত্র সংজ্ঞা এখানে দেওয়া হয়েছে ( আর্চলিনাক্স উইকিতে ):

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

তবে, এটি আমার জন্য আরও প্রশ্ন উত্থাপন করে:

  • এর অর্থ কি "সাবউরটাইন" বা "বৈশিষ্ট্য" হিসাবে "ফাংশন"?
  • এই স্ক্রোলব্যাক বাফারটির জন্য কি কোনও ইউনিক্স স্ট্যান্ডার্ড বা এপিআই রয়েছে?
  • একটি যেমন প্রোগ্রামের "স্ট্যাকের", ইন vimচালু screenচালু bashচালু মধ্যে sshএকটি টার্মিনাল এমুলেটর চালু, যা এই প্রোগ্রামের স্ক্রলব্যাক বাফার নিয়ন্ত্রণ করছে?

আমি ব্যবহার screenকরতে একটি ফাইলে স্ক্রলব্যাক ডাম্প । এই ফাইলটির শীর্ষে অনেকগুলি সাদা জায়গা ছিল এবং এটি দেখে মনে হচ্ছে যে আমার ভিউ টার্মিনাল এমুলেটরটি দেখায় যে এটি কেবল বাফারের নীচের কয়েকটি লাইন।

  • এই কারণেই কোনও প্রোগ্রামটি vimআমার পুরো টার্মিনাল উইন্ডোটিকে "সাফ" করতে পারে, কারণ এটি প্যারেন্ট শেলের স্ক্রোলব্যাক বাফারটিতে অস্থায়ী অ্যাক্সেস পেয়েছে?
  • বা vimতার নিজস্ব স্ক্রোলব্যাক বাফার ব্যবহার করে যা প্যারেন্ট স্ক্রোলব্যাক বাফারের শীর্ষে কোনওভাবে overেকে দেওয়া হয়?

উত্তর:


28

এটি কিছুটা জটিল প্রশ্ন। আমি আপনার প্রশ্নের উত্তর পাল্টানোর চেষ্টা করব, তবে প্রথমে একটি সাধারণ বিবরণ:

স্ক্রোলব্যাক বাফারটি আপনার টার্মিনাল এমুলেটর ( xterm, কনসোল, জিনোম টার্মিনাল) দ্বারা প্রয়োগ করা হয় । এটিতে টার্মিনালটিতে আপনি চালিত প্রতিটি প্রোগ্রামের স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি সহ স্ক্রিনে প্রদর্শিত সমস্ত পাঠ্য রয়েছে। আপনার অতীত আউটপুট যা আপনাকে অতীতে স্ক্রোল করে থাকতে পারে বা কিছু আগে কী বলেছিল তা খতিয়ে দেখার জন্য এটি সম্পূর্ণরূপে টার্মিনাল কার্যকারিতা।

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

মনে করুন যে সীমাটি 1000 লাইন। আপনার সেশনে প্রথম হাজার লাইনের আউটপুট দেওয়ার জন্য আপনি কেবল বাফারে সংযোজন করেছেন এবং আপনি আপনার সেশনের শুরুতে স্ক্রোল করতে পারেন। আউটপুট 1001 তম লাইনের সাথে সাথেই বাফারের প্রথম লাইনটি মুছে ফেলা হবে এবং আপনি যে সর্বাধিক পিছনে পিছনে স্ক্রোল করতে পারবেন তা আপনার সেশনের দ্বিতীয় লাইন হবে। বাফারে সর্বদা আপনার পর্দায় প্রদর্শিত হাজার হাজার আউটপুট আউটপুট থাকবে এবং আপনি যে কোনও সময় আগের আউটপুটটি সন্ধান করতে স্ক্রোল করতে পারেন।

  • এর অর্থ কি "সাবউরটাইন" বা "বৈশিষ্ট্য" হিসাবে "ফাংশন"?

    এটি "বৈশিষ্ট্য" হিসাবে "ফাংশন"। টার্মিনাল এমুলেটরটির একটি কার্যকারিতা রয়েছে যা স্ক্রিনে যা আছে তা রেকর্ড করে এবং আপনাকে এতে উপরে এবং নীচে স্ক্রোল করতে দেয়। কিছু সিস্টেমে কনসোলগুলি সীমিত স্ক্রোলব্যাককে সমর্থন করে।

    আপনি screenমিশ্রণটি ফেলে দিলে এটি কিছুটা জটিল হয়ে যায়। এই মুহুর্তে, screenনিজেই স্ক্রোলব্যাক বাফার অনুকরণ করছে - এজন্য আপনি কেবলমাত্র (সিলেক্ট) এক্স নির্বাচন না করে প্রোগ্রামটির মধ্যে এটি থেকে অনুলিপি এবং পেস্ট করতে পারেন।

  • এই স্ক্রোলব্যাক বাফারটির জন্য কি কোনও ইউনিক্স স্ট্যান্ডার্ড বা এপিআই রয়েছে?

    সংক্ষিপ্ত উত্তরটি হ'ল না, এটি কেবলমাত্র আপনার টার্মিনাল দ্বারা সরবরাহ করা হয়েছে। আমরা নীচের দিকে আরও দীর্ঘ উত্তর পাবেন।

  • প্রোগ্রামগুলির একটি "স্ট্যাক" তে, যেমন টার্মিনাল এমুলেটরে চালু হওয়া এসএস-তে চালু হওয়া স্ক্রিনে লঞ্চ করা ভিআইএম, এই প্রোগ্রামগুলির মধ্যে কোনটি স্ক্রোলব্যাক বাফার নিয়ন্ত্রণ করছে?

    ক্ষেত্রে vimএবং bashতারা সব সময়ে এটা নিয়ন্ত্রণ নেই (সতর্কীকরণ, আবার, নীচে)। আপনার টার্মিনালটি আপনার শেল থেকে শুরু করে এর ভিতরে থাকা সমস্ত প্রোগ্রামের জন্য স্ক্রলব্যাক বাফার সরবরাহ করে। screenউপরে উল্লিখিত হিসাবে, নিজেই স্ক্রোলব্যাক অনুকরণ করছে।

  • আমি স্ক্রোলব্যাকটি কোনও ফাইলে ফেলার জন্য স্ক্রিনটিও ব্যবহার করেছিলাম। এই ফাইলটির শীর্ষে অনেকগুলি সাদা জায়গা ছিল এবং এটি দেখে মনে হচ্ছে যে আমার ভিউ টার্মিনাল এমুলেটরটি দেখায় যে এটি কেবল বাফারের নীচের কয়েকটি লাইন।

    এটি screenঅভ্যন্তরীণ বাফার। আপনার স্ক্রিনে যা রয়েছে তা সাধারণত বাফারের একেবারে নীচে থাকে।

  • এই কারণেই কি ভিআইএম এর মতো একটি প্রোগ্রাম আমার পুরো টার্মিনাল উইন্ডোটিকে "সাফ" করতে পারে, কারণ এটি প্যারেন্ট শেলের স্ক্রোলব্যাক বাফারে অস্থায়ী অ্যাক্সেস পেয়েছে?

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

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

    এই বিকল্প বাফারটি আমি উপরে উল্লিখিত গুপ্তচরগুলির একটি। কখনও কখনও, প্রোগ্রামটি বাফারের সাথে কী করা উচিত তা টার্মিনালটি বলার ক্ষমতা রাখে।

    screenএটি এমন একটি প্রোগ্রাম যা এটি করে, যার জন্য আপনার টার্মিনালের স্ক্রোলিং কার্যকারিতা সাধারণত স্ক্রিন সেশনে থাকাকালীন কাজ করে না -  screenনিজেই স্ক্রোলব্যাক বাফারকে এমুলেটেড করে, তাই আপনাকে পুরানো আউটপুটটিতে যেতে তার অভ্যন্তরীণ কার্যকারিতাটি ব্যবহার করতে হবে।

  • অথবা ভিআইএম তার নিজস্ব স্ক্রোলব্যাক বাফার ব্যবহার করে যা প্যারেন্ট স্ক্রোলব্যাক বাফারের শীর্ষে কোনওভাবে overেকে দেওয়া হয়?

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

এই সমস্ত ব্যতিক্রমগুলি আমি উল্লেখ করেছি:

এটি আবার কিছুটা জটিল হয়ে যায়। আমি বলেছিলাম যে অ্যাপ্লিকেশনগুলির স্ক্রোলব্যাকের উপর কোনও নিয়ন্ত্রণ নেই এবং এটি সম্পূর্ণরূপে টার্মিনাল দ্বারা সরবরাহ করা হয়েছে। কিছু ক্ষেত্রে, কিছু টার্মিনাল সহ, সীমিত মিথস্ক্রিয়া হয়। প্রোগ্রামটি কিছু পালানোর ক্রমগুলি প্রিন্ট করে - যদি আপনি অতীতে কখনও ম্যানুয়ালি টার্মিনাল রঙিন ব্যবহার করেন তবে আপনি তাদের দেখতে কেমন তা দেখতে পেয়েছেন - এবং টার্মিনালটি সেগুলির ব্যাখ্যা করতে পারে এবং এর আচরণ পরিবর্তন করতে পারে, বা প্রোগ্রামে তথ্য ফেরত পাঠাতে পারে। কোন এস্কেপ সিকোয়েন্স পাওয়া যায় তা বর্ণিত হয়েছে described টার্মক্যাপ (টার্মিনাল সক্ষমতা) ডাটাবেসে

কিছু টার্মিনাল স্ক্রোলব্যাক বাফারকে সীমাবদ্ধ অনুসন্ধান এবং কারসাজি সমর্থন করে। অনেকxterm ডেরাইভেটিভের এসকেপ সিকোয়েন্স রয়েছে যা টার্মিনালটিকে তার দৃশ্যটি স্ক্রোল করতে পরিচালিত করে। অনেকগুলি টার্মিনাল বাকী সমস্ত অক্ষত রেখে স্ক্রোলের জন্য পর্দার একটি নির্দিষ্ট ক্ষেত্র নির্দিষ্ট করার জন্যও সমর্থন করে। এতে স্ক্রোলব্যাক বাফারটি ভেঙে যায়।

প্রায় সমস্ত টার্মিনালগুলি স্ক্রিনের চারপাশে কার্সারটি সরানোর জন্য সিকোয়েন্সগুলি সমর্থন করে, যা ncursesলাইব্রেরিটি প্রদর্শনের সমস্ত বিভিন্ন অংশ আপডেট করতে সক্ষম হয়। আপনি সমর্থিত ভিটি 100 সিকোয়েন্সগুলিxterm দেখতে পারেন । এগুলি যেভাবে স্ক্রোলব্যাক বাফারটির সাথে ইন্টারঅ্যাক্ট করে তা কিছু সময় অদ্ভুত হতে পারে, বিশেষত এমন কোনও ক্ষেত্রে যা lessকমান্ডের মতো নিজস্ব স্ক্রোলিং আচরণ প্রয়োগ করে। আপনি আপনার স্ক্রোলব্যাকে সদৃশ বা অনুপস্থিত রেখাগুলি দিয়ে শেষ করতে পারেন কারণ lessআপনার টার্মিনালটি প্রত্যাশা না করে এমনভাবে শীর্ষে পাঠ্যটি আবার আঁকুন। অন্যান্য প্রোগ্রামগুলি কখনও কখনও আপনার বাফারকে তাদের সম্পূর্ণ প্রদর্শনটির একাধিক অনুলিপি দিয়ে পূর্ণ করে।


1
এই দুর্দান্ত উত্তরের জন্য আপনাকে অনেক ধন্যবাদ! এটি অত্যন্ত সম্পূর্ণ এবং জটিল বিষয় সত্ত্বেও বোঝা সহজ। অতিরিক্ত বিশদ উভয়ই আমাকে আরও শিখতে চায় এবং কোথায় দেখায় তা আমাকে দেখায়।
ওলেগ

1
কিছু টার্মিনালের সীমাহীন স্ক্রোলব্যাকের বিকল্প রয়েছে, এর অর্থ কী পুরো স্ক্রোলব্যাকটি র‌্যাম (তাই কোনও কোনও সময় আমরা টার্মিনালে একটি ম্যালোক ব্যর্থতা বা ওওএমটি পেয়ে যাব), অথবা এটি কীভাবে ডিস্কে লেখার চেষ্টা করে এবং ডিস্ক থেকে লোড করার চেষ্টা করে? স্ক্রল? চ্যাট প্রোগ্রাম মত ধরণের।
সিএমসিডিগ্রাগনকাই

অনুসন্ধানের জন্য এস্কেপ সিকোয়েন্সগুলি সাধারণত টার্মক্যাপে হয় না (এগুলি সাধারণত টার্মিনফোতে হয় না, যা আরও সম্পূর্ণ হবে)।
টমাস ডিকি

@ সিএমসিডিগ্রাগনকাই কনসোল স্মৃতিতে সীমাবদ্ধ স্ক্রোলব্যাক রাখে, তবে ডিস্কে এনক্রিপ্ট না করা ইনফাইটনাইট স্ক্রোলব্যাক রাখে; আপনি এর সেটিংস ডায়ালগ এ সম্পর্কে সতর্ক করা হয়। ভিটিই (জিনোম-টার্মিনাল এবং অন্যান্য) ডিস্কে সংক্ষিপ্ত এবং এনক্রিপ্ট করা স্ক্রোলব্যাক (সসীম বা অসীম) সঞ্চয় করে। অন্যান্য ইমুলেটররা কী করে তা আমি জানি না।
egmont
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.