Множественный заказ pv

Я обнаружил, что двойное нажатие F3 (для отображения и скрытия «второй панели файлов» )фокусирует список файлов.

3
30.09.2020, 19:16
1 ответ

Два pvпроцесса в конвейере могут запускаться в любом порядке. Вывод последнего pvбудет в нижней строке.

Задержка pvнужна в нижней строке. Вместо pv …(, где обозначает все его аргументы ), используйте подоболочку:

( </dev/null sleep 1; exec pv … )

Теоретически другой pvможет начаться после отложенного, но в не-полностью -перегруженной системе почти наверняка отложенный pvзапустится последним.

sleepв любом случае не должен читать со своего стандартного ввода; </dev/nullна случай, если ваш sleepбудет странным.

Я не уверен, может ли какое-либо состояние гонки вызвать появление дополнительной строки (stale ). Если это так, отсрочка pvдолжна также (почти наверняка )помочь. В моих тестах вывод искажается, когда терминал необходимо «дополнительно» обновить. Поэтому:

  • Не изменяйте размер терминала во время работы pv.
  • Избегать прокрутки :
    • Перед запуском скрипта вызовитеclear(или нажмите Ctrl + L). Это очистит экран, поместит подсказку сверху и освободит место внизу без необходимости прокрутки позже.
    • Не вводите текст во время выполнения pvs; следует избегать особенно многократных Enter s (, которые могут в конечном итоге прокручивать текст ).
    • Как правило, не позволяйте ничему, кроме pv, печатать на терминале, пока pvне завершится. Это относится и к другим частям трубы (, напр. через /dev/tty), асинхронные процессы в сценарии (, например. просто через их стандартный вывод ), процессы вне скрипта (, например. через /dev/tty*или /dev/pts/*).
4
18.03.2021, 23:01

Теги

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