wget
может сделать это:
wget -A.png,.jpg,.gif,.jpeg -e robots=off -m -k -nv -np -p \
--user-agent="Mozilla/5.0 (compatible; Konqueror/3.0.0/10; Linux)" \
http://site.url/
Единственная проблема может состоять в том в случае, если сайт генерирует свое содержание с помощью JavaScript.
Существует escape-последовательность для (vt100-выхода) терминалы ECMA-48, который ограничивает прокрутку подмножеством строк:
Вершина CSI; нижняя часть r
Вот демонстрация
# Start with the screen clean and cursor on line 1
clear
# print the non-scrolling banner line
echo Hello world
# set up the scrolling region to lines 2 through 11 and position the
# cursor at line 2
echo -n '^[[2;11r^[[2H'
# Run a command that will produce more than 10 lines, with a slight delay
# so it doesn't happen so fast you can't see it scrolling
perl -MTime::HiRes=sleep -le 'for(1..100) { print; sleep 0.05; }'
# Restore normal scrolling and put cursor on line 12
echo -n '^[[r^[[12H'
Примечание: Все экземпляры ^[
в вышеупомянутом должны быть фактические символы ESC в сценарии. В vi, например, они вводятся в режим вставки с CtrlV, сопровождаемым Esc.
Мультихвост является a tail -f
на стероидах. Его способности включают разделение экрана и показ нескольких файлов или команд.
Если важные строки прибывают из файла:
tar -cvf "Bckup.tar" "folder to backup/" | multitail important.txt -j
Если важные строки являются выводом команды:
tar -cvf "Bckup.tar" "folder to backup/" | multitail -l 'show-stuff --important' -j
Если я понимаю правильно, что BrainStone просит "окно прокрутки".
Можно достигнуть этого с Проклятиями и жемчугом:
#! /usr/bin/perl
use strict;
use warnings;
use Curses;
$SIG{INT} = sub { endwin; exit(0); };
initscr();
my $w = newwin(11, COLS(), 10, 1);
$w->scrollok(1);
my $a=0;
while(<>) {
$a++ if($a < 10);
$w->addstr($a, 0, $_);
$w->refresh();
}
endwin;
Это создаст "окно прокрутки" в строке 10, 10 строк долго, которые отобразят вывод переданной по каналу команды. Необходимо будет изменить его для удовлетворения потребностям, но основная предпосылка там. Вы могли бы хотеть обработать все свои команды оболочки в жемчуге и иметь все это в одном сценарии. Или Вы могли, например, использовать аргументы команды для передачи Very important information. MUST BE VISIBLE!
строка, или может быть имя файла, которое содержит важную информацию. И дисплей, что, прежде чем окно прокрутки создается.
Я сделал больше подробно версия на pastebin, который обрабатывает несколько опций команды (таких как размер окна прокрутки, количество строк в терминале для возмещения окна и "заголовочного файла" для отображения перед выводом). Подробная информация опций команды и некоторых дополнительных комментариев предоставлена.
Использование кода выше, как, если Вы выразились в названный файл scroller.pl
, просто установите полномочия файлов, таким образом, это - исполняемый файл:
$ chmod +x scroller.pl
Можно затем использовать его для проявления вывода от длительной команды как так:
$ seq 10000 | scroller.pl
Эта версия затем выйдет когда вывод, передаваемый по каналу в scroller.pl
завершено, и возвратите Вас своей нормальной установке оболочки.
chmod 750 scroller.pl
и затем можно сделать tar -zcvf mybackup.tar backupdir | scroller.pl
- необходимо не обязательно изучить жемчуг для использования его :) Это - просто другой "инструмент", который можно использовать в сценариях.
– Drav Sloan
26.08.2013, 05:02
Если Вы всегда хотите видеть просто последние строки N, я не думаю, что можно избегать использования временного файла. Что-то вроде этого:
while true; do sleep 1; date +%s >> temp_file; done
Затем в другом терминале, выполненном
while true; do clear; tail -n 10 temp_file;sleep 1; done
Та последняя команда i) очистит терминал, ii) распечатает последние 10 строк временного файла и iii) ожидать в течение одной секунды. Результатом будет непрерывно обновляющий дамп текущих последних 10 строк временного файла.
Насколько я знаю, нет никакого способа сделать это при хранении исходной команды в поле зрения в единственном терминале.
Я, может казаться, не заставляю это работать на несколько строк, но это работает на одни строки:
#!/bin/bash
echo "Very important information. MUST BE VISIBLE!"
while tar -cvf "Bckup.tar" lmde_backup/www/lycabettus/ >tmp_file 2>&1 & do
output=$(tail -n 1 aa);
echo -ne "$output\r";
done
Это действительно приводит к артефактам, когда текущая строка короче, чем последняя, таким образом, это действительно не прекрасно, но Вы смогли изменять к лучшему его.
tail -f
прокрутите свободно. Если Вы конкретно не заявляете, в чем Вы нуждаетесь (разъясните свой ответ на комментарий slhck, возможно, добавьте пример), мы не можем дать Вам удовлетворительный ответ. Ifit является сценарием, который печатает все эти строки, Вы могли сделать что-то умное с \r
.
– terdon♦
25.08.2013, 23:23
Вот простой сценарий удара, который можно использовать для контроля вывода команды (команда в этом примере rpm -qa
) линию за линией с вручную определяют таймер автоматического отключения. Это также добавляет Ваш вывод во временный файл для ссылки после завершения сценария. Что касается циклического повторения через 10 буферов строки, я не могу думать о решении в этой точке.
#!/bin/bash
syntax="rpm -qa"
command=( $($syntax) )
echo "Using: $syntax"
for line in "${command[@]}"
do
echo "$line" >> /tmp/temp.file
echo -ne "OUTPUT: $line\033[0K\r"
sleep 0.2
done
echo
commands >> text.txt | tail -f -n 10 text.txt
–
25.08.2013, 23:01
tail -f
Не завершит автоматически
–
25.08.2013, 23:04
-f
если Вы cat
так как вывод никогда не будет изменяться, -f
для контроля потоков файлов/текста. Я предполагаю, что Вы имели в виду tail -f -n 35 /var/log/messages
но это все еще показывает новые строки, поскольку они входят, не удаляя предыдущие. Кроме того, commands >> text.txt | something_else
не имеет никакого смысла, необходимо использовать &&
или ;
разделить команды, |
для передачи по каналу к другой команде и не будет работать, если Вы отправляете вывод левого операнда в файл.
– terdon♦
25.08.2013, 23:07
echo -e
и\e
также, который поддерживается в ответах здесь. Например.echo -en '\e[2;11r\e[2H'
– Michael Mrozek♦ 26.08.2013, 07:54