/dev/vcs[a]<n>
size sadece son ekran-full yukarı kaydırılan olsanız bile olsun, ama seçim olacaktır ioctl()
tarafından kullanıldığı gibi s gpm
yukarı kaydırılan ettik zaman bile o anda görüntülenen ekrana dökümü sağlayacaktır.
Yani şunları yapabilirsiniz:
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 ve 25'i gerçek ekran genişliğinize ve yüksekliğinize göre ayarlayın.
sleep 3
Size (ile yukarı kaydırmak için zaman verir Shift+PageUPBatmana istediğiniz gerçek ekrana). cat > file
macunu adresine yönlendirir file
. İle bitirin Ctrl+D.
Detaylar console_ioctl(4)
için bakınız.
Eğer varsa gpm
yüklü ve çalışır, sen fare ile bu seçimi yapabilirsiniz.
Linux sanal konsol kaydırma ve seçimi çok sınırlı ve oldukça sinir bozucudur (konsolu değiştirdiğinizde tüm kaydırma işlemini kaybedersiniz). İleride, GNU gibi screen
ya da tmux
içindeki şeyleri kullanmanızı öneririm (kişisel olarak daha yetenekli terminallerde kullanırım). Onlarla daha büyük aranabilir kaydırmalara sahip olabilir ve bunları kolayca dosyalara bırakabilirsiniz (ve hatta tüm terminal çıkışlarını ve ayrıca bu terminal çoklayıcılarla gelen diğer tüm güzellikleri günlüğe kaydedebilirsiniz).
Tüm kaydırma geri alma arabelleğini boşaltmak için işlemi otomatikleştirmek söz konusu olduğunda, bazı koşullar altında mümkün olması gerekir, ancak API çok sınırlı olduğundan oldukça zor. ioctl
Mevcut sanal konsolu bir miktar kaydırmayla kaydırmak için belgelenmemiş (TIOCLINUX, subcode = 13) var (yukarı kaydırmak için negatif, aşağı kaydırmak için pozitif).
Ancak geri kaydırma arabelleğinin geçerli boyutunu bilmenin bir yolu yok (bildiğim kadarıyla). Bu tamponun en üstüne ne zaman ulaştığınızı bilmek zor. Geçmeye çalışırsanız, ekran o kadar fazla kaydırılmaz ve ekranın gerçekte ne kadar kaydırıldığını bilmenin güvenilir bir yolu yoktur.
Ayrıca kaydırma ioctl davranışını kararsız buluyorum (en azından VGA konsolu ile), 4 satırdan daha az kaydırmanın sadece ara sıra çalıştığı yerlerde.
Aşağıdaki komut dosyası, kaydırma geri alma tamponunun bir ekrandan bir satırdan daha uzun aynı satır dizileri içermemesi koşuluyla, benim için çerçeve tampon konsollarında (ve bazen de VGA'da) çalışıyor gibi görünüyor.
Oldukça yavaştır çünkü her seferinde bir satır kayar ve her ekran dökümü okunurken 10 dakika beklemesi gerekir.
that-script > file
Sanal konsolun içinden kullanılmak üzere .
#! /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);