/dev/vcs[a]<n>
আপনি কেবল স্ক্রোল করে থাকলেও কেবল আপনাকে সর্বশেষ স্ক্রিন-পূর্ণ পাবেন, তবে ioctl()
ব্যবহার হিসাবে করা নির্বাচন আপনাকে স্ক্রল আপ gpm
করার পরেও প্রদর্শিত প্রদর্শিত পর্দা ডাম্প করার অনুমতি দেবে।
সুতরাং আপনি এটি করতে পারেন:
sleep 3; perl -e '
require "sys/ioctl.ph";
# copy:
ioctl(STDIN, &TIOCLINUX, $arg = pack("CS5", 2, 1, 1, 80, 25, 2));
# paste:
ioctl(STDIN, &TIOCLINUX, $arg = "\3")'; cat > file
আপনার প্রকৃত পর্দার প্রস্থ এবং উচ্চতাতে 80 এবং 25 কে সামঞ্জস্য করুন।
sleep 3
আপনি (আপ স্ক্রল সময় পাবেন, Shift+PageUP) প্রকৃত পর্দা আপনাকে ডাম্প করতে চান। cat > file
পেস্টটি পুনর্নির্দেশ করে file
। এটি দিয়ে শেষ Ctrl+D।
দেখুন console_ioctl(4)
বিস্তারিত জানার জন্য।
আপনি যদি gpm
ইনস্টল ও চালিত হয়ে থাকেন তবে মাউস দিয়ে সেই নির্বাচনটি করতে পারেন।
লিনাক্স ভার্চুয়াল কনসোল স্ক্রোলব্যাক এবং নির্বাচন খুব সীমাবদ্ধ এবং বেশ বিরক্তিকর (এতে আপনি যখন কনসোল স্যুইচ করবেন, আপনি পুরো স্ক্রোলব্যাকটি হারাবেন)। এগিয়ে যেতে, আমি আপনাকে জিএনইউ screen
বা এর tmux
মধ্যে জিনিস ব্যবহার করার পরামর্শ দিই (আমি ব্যক্তিগতভাবে এগুলি আরও বেশি সক্ষম টার্মিনালগুলিতে ব্যবহার করি)। তাদের সাথে, আপনার কাছে বৃহত্তর সন্ধানযোগ্য স্ক্রোলব্যাক থাকতে পারে এবং এগুলিকে সহজেই ফাইলগুলিতে ফেলে দেওয়া যায় (এবং সমস্ত টার্মিনাল আউটপুট লগও করতে পারে, সেই সাথে টার্মিনাল মাল্টিপ্লেক্সারের সাথে আসা সমস্ত অন্যান্য গুডিও)।
পুরো স্ক্রোলব্যাক বাফারটি ডাম্প করার জন্য প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে চালানোর জন্য, এটি কিছু শর্তে সম্ভব হওয়া উচিত, তবে এপিআই খুব সীমাবদ্ধ হওয়ায় এটি বেশ কঠিন। ioctl
কিছু অফসেট (স্ক্রোলিংয়ের জন্য নেতিবাচক, নীচে স্ক্রোল করার জন্য ধনাত্মক) দ্বারা বর্তমান ভার্চুয়াল কনসোলটি স্ক্রোল করার জন্য একটি অননুমোদিত (TIOCLINUX, সাবকোড = 13) রয়েছে।
স্ক্রোলব্যাক বাফারটির বর্তমান আকারটি জানার উপায় নেই (তবে আমি জানি)। সুতরাং আপনি কখন বাফারের শীর্ষে পৌঁছেছেন তা জানা শক্ত। আপনি যদি এটি অতীতের দিকে স্ক্রোল করার চেষ্টা করেন তবে স্ক্রিনটি তত বেশি স্থানান্তরিত হবে না এবং স্ক্রিনটি আসলে কতটা স্ক্রোল করেছে তা জানার কোনও নির্ভরযোগ্য উপায় নেই।
আমি স্ক্রোলিং আইওসিটিএল এরেটিক (কমপক্ষে ভিজিএ কনসোল সহ) এর আচরণটিও পাই, যেখানে 4 টিরও কম লাইনের মাধ্যমে স্ক্রোলিং কেবল মাঝে মাঝে কাজ করে।
নীচের স্ক্রিপ্টটি আমার জন্য ফ্রেম বাফার কনসোলগুলিতে (এবং মাঝে মাঝে ভিজিএর উপরও) কাজ করে বলে মনে হচ্ছে শর্তিত যে স্ক্রোলব্যাক বাফারটিতে একটি স্ক্রিন প্লাস ওয়ান লাইনের চেয়ে বেশি লম্বা লম্বা লাইনগুলির ক্রম থাকে না।
এটি বেশ ধীর কারণ এটি একবারে একটি লাইন স্ক্রোল করে এবং প্রতিটি স্ক্রিন ডাম্প পড়ার সময় 10 মিমি অপেক্ষা করতে হবে to
that-script > file
ভার্চুয়াল কনসোলের মধ্যে থেকে হিসাবে ব্যবহার করা ।
#! /usr/bin/perl
require "sys/ioctl.ph";
($rows,$cols) = split " ", `stty size`;
$stty = `stty -g`; chomp $stty;
system(qw(stty raw -echo icrnl min 0 time 1));
sub scroll {
ioctl(STDIN, &TIOCLINUX, $arg = pack("Cx3l", 13, $_[0])) or die "scroll: $!";
}
sub grab {
ioctl(STDIN, &TIOCLINUX, $arg = pack("CS5", 2, 1, 1, $cols, $rows, 2)) or die "copy: $!";
ioctl(STDIN, &TIOCLINUX, $arg = "\3") or die "paste: $!";
return <STDIN>;
}
for ($s = 0;;$s--) {
scroll $s if $s;
@lines = grab;
if ($s) {
last if "@lines" eq "@lastlines";
unshift @output, $lines[0];
} else {
@output = @lines;
}
@lastlines = @lines;
}
print @output;
exec("stty", $stty);