Войдите в систему как пользователь root, затем откройте терминал и введите hp-setup
, после чего просто следуйте инструкциям.
Вот решение, использующее Ruby.
count_lines
печатает (черезstderr
)максимум каждые полсекунды количество строк, полученных до сих пор, и общее количество в конце (черезstdout
).
read -d '' make_lines <<'EOF'
STDOUT.sync = true
[0.2, 0.1, 0.5, 0.1, 0.6, 0.1, 0.3, 0.1, 0.3, 0.01, 0.01].each do |t|
puts
sleep t
end
EOF
read -d '' count_lines <<'EOF'
lines = 0
t = 0
while gets do
lines += 1
now = Time.now.to_f
if now - t > 0.5
warn lines
t = now
end
end
puts lines
EOF
ruby -e "$make_lines" | ruby -e "$count_lines"
Большинство терминалов принимают CR (\r)
за "Переместить в столбец 1". Это позволяет вам продолжить -запись предыдущего вывода.
Это сценарий dwc
, который будет читать из стандартного ввода (, который может быть tail -f
из файла или из подстановки выходного процесса ). В скрипте есть образец тестовой кровати -.
Требуется опция -l
. По умолчанию номер входной строки печатается в текущей строке терминала в виде шести цифр. С -l
он также печатает первые 60 символов последней полученной строки, очищая любой предыдущий текст. Когда он видит EOF, он выводит новую строку, поэтому подсказка появляется под последним выводом.
#! /bin/bash
#.. dwc [-l]
AWK_SHORT='
BEGIN { Fmt = "\r%6d "; }
{ printf (Fmt, NR); }
END { printf ("\n"); }
'
AWK_LONG='
BEGIN { Fmt = "\r%6d %.60s"; Clr = sprintf ("%60s", ""); }
{ printf (Fmt, NR, $0 Clr); }
END { printf ("\n"); }
'
if [[ "${1}" = "-l" ]]; then
awk "${AWK_LONG}"
else
awk "${AWK_SHORT}"
fi
exit
#.. Test method.
man ls | head -n 40 |
while IFS='' read X; do
printf '%s\n' "${X}"; sleep 0.75
done |
tee >(./dwc -l ) > foo.txt