Как замедлить прокрутку многостраничного стандартного вывода на терминале?

Я был техническим специалистом, работающим над этой проблемой, и нашел, как заставить интерактивное редактирование работать. Проблема с использованием yum в том, что поскольку ОС использует так много python, мы не можем обновлять его через yum (политика компании).

Мне пришлось скомпилировать python 3.4.3 из исходников. После того как он был скомпилирован и установлен, мне пришлось добавить каждый пакет, которого не хватало. Этим конкретным пакетом был gnureadline. Readline является устаревшим. Вот шаги, которые я предпринял для сборки и установки пакета (для CentOS 6.7):

  1. wget https://pypi.python.org/pypi/gnureadline/6.3.3
  2. tar -xzvf gnureadline-6.3.3.tar.gz
  3. cd gnureadline-6.3.3
  4. python3 setup.py install

    NOTE: Здесь я столкнулся с проблемой /usr/bin/ld: cannot find -lncurses. Используя /usr/bin/ld -lncurses --verbose, обнаружил, что в путях, по которым он искал, нет библиотек. Создал симлинк, и все заработало. Если вы не получаете ошибок, перейдите к последнему шагу.

  5. ln -s /lib64/libncurses.so.5.7 /usr/lib64/libncurses.so

  6. python3 setup.py install
  7. Проверено Я могу использовать ctrl-a и стрелки для перемещения по строке.

3
16.06.2016, 18:52
1 ответ

Простая программа на языке Go для управления выводом.

// moderare will slow down printing.
//
// $ find ~ | moderare
package main

import (
    "bufio"
    "flag"
    "fmt"
    "io"
    "log"
    "os"
    "time"
)

var (
    sleep = flag.Duration("s", 1*time.Second, "sleep after each line")
    br    = bufio.NewReader(os.Stdin)
)

func main() {
    flag.Parse()
    for {
        line, err := br.ReadString('\n')
        if err == io.EOF {
            break
        }
        if err != nil {
            log.Fatal(err)
        }
        time.Sleep(*sleep)
        fmt.Printf(line)
    }
}
1
02.04.2021, 00:56

Теги

Похожие вопросы