Подробная команда перехода в спящий режим, отображающая время ожидания в секундах/минутах?

из man,

ll -v

  • -v естественный вид (версий )номеров в тексте
0
29.07.2020, 12:00
2 ответа

Хакерский подход с использованиемpv:

$ yes | pv -SeL1 -s 5 > /dev/null
ETA 0:00:04

Или:

$ yes | pv -SL1 -F 'Resuming in %e' -s 5 > /dev/null
Resuming in ETA 0:00:04

pvобычно используется для отображения индикатора выполнения ввода-вывода некоторого потока данных. Здесь мы используем постоянный поток команды yes, но скорость -ограничивает его до 1 байта в секунду(-L1Sдостигает предела после того, как вывод достигает sразмера 5. байт.

Вы можете добавить туда больше информации, например, прошедшее время, расчетное время прибытия, как в часах, когда ожидается его завершение, или даже индикатор выполнения:

$ yes | pv -SpeL1 -s 5 > /dev/null
[===========>                                                  ] 20% ETA 0:00:04

Обратите внимание, что продолжительность не будет ровно 5 секунд (ближе к 6 на самом деле здесь с pv 1.6.6 в моих тестах ).

Говоря о индикаторе выполнения ,вы также можете передать его вывод наzenity(графический )или diaglog/ whiptailдля еще более красивого отображения:

yes | pv -SnL1 -s 5 2>&1 > /dev/null | 
  zenity --progress --auto-close --no-cancel \
         --title 'Please wait...' --text 'Please wait...'

zenity

yes | pv -SnL1 -s 5 2>&1 > /dev/null |
  whiptail --gauge 'Please wait...' 5 20 0

whiptail

Для более плавного продвижения вы можете увеличить скорость до 10 байт в секунду (и умножить отрезанный -размер на 10 ), указав при этом, что вы получите 10 обновлений в секунду:

yes | pv -SpeL10 -i0.1 -s 50 > /dev/null
yes | pv -SnL10 -i 0.1 -s 50 2>&1 > /dev/null |
  whiptail --gauge 'Please wait...' 6 20 0
2
18.03.2021, 23:16

Запустить режим сна 5 раз?

for ((i=5;i>0;i--)); do printf '%s %s\r' "$i" 'seconds pending'; sleep 1; done; echo

Точность довольно хорошая, есть только накладные расходы цикла.

1
18.03.2021, 23:16

Теги

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