Если вы хотите использовать средство просмотра KDE в Firefox, вы можете использовать плагин KParts. Для этого установите пакет kpartsplugin. Из описания пакета:
Это программное обеспечение реализует плагин для Netscape-совместимых браузеров в средах Unix. Этот плагин использует технологию KParts KDE для встраивания файловых зрителей (например, для файлов PDF) в не-KDE-браузеры. Тестируемые браузеры включают в себя как Mozilla Firefox, так и Opera, а также знают, как работать с Chrome и Arora. С помощью этого плагина вы можете просматривать файлы PDF в Firefox, используя Okular как встроенный плагин.Здесь я открыл PDF-документ в Firefox с помощью встроенного Okular KPart:
Таймер обратного отсчета:
MIN=1 && for i in $(seq $(($MIN*60)) -1 1); do echo -n "$i, "; sleep 1; done; echo -e "nnMessage"
и «нормальный» секундомер:
START=$( date +%s ); while true; do CURRENT=$( date +%s ) ; echo $(( CURRENT-START )) ; sleep 1 ; echo -n ; done
control + c, чтобы остановить
В основном то же самое, что и ответ aneeshep, но использует Return (\r), а не Backspace (\b), потому что мы не знаем, будет ли длина всегда одинаковой, например. если $sek < 10.
Кроме того, ваш первый echo должен использовать $sek, а не жесткий код 60.
Наконец, обратите внимание на пробел после ... .
#!/bin/bash
sek=60
echo "$sek Seconds Wait!"
while [ $sek -ge 1 ]
do
echo -ne "One Moment please $sek ... \r"
sleep 1
sek=$[$sek-1]
done
echo
echo "ready!"
В дополнение к подходам \r или \b можно использовать управляющий символ \033[2K, который сообщает терминалу очистить всю строку. Преимущество этого по сравнению с \b заключается в том, что вам не нужно сопоставлять число \b с количеством символов, которое вы хотите удалить, и по сравнению с \r на экране не будут присутствовать символы, торчащие на экране если новая строка короче старой.
Ниже приведен пример того, как он может быть применен к этому вопросу, а управляющий символ является примером связанного приложения для создания вывода, аналогичного загрузочным сообщениям. В этом конкретном примере таймер исчезнет после достижения 0-й секунды, а линия таймера будет заменена на «Готов!». фраза
#!/bin/bash
sek=60
echo "60 Seconds"
while ((sek--)); do
printf "One moment please: %d" "$sek"
sleep 1
printf "\r%b" "\033[2K"
done
echo "Ready!"
Другой альтернативой было бы использование команды dialog для создания простых диалогов в командной строке. Диалог останется на экране в течение всего таймера и обновится с помощью цикла, и к моменту его завершения таймер будет заменен на сообщение «Готово! Нажмите, чтобы выйти»:
#!/bin/bash
sek=60
echo "60 Seconds"
while ((sek--)); do
echo "$sek" | dialog --progressbox "Please wait" 10 25
sleep 1
done
dialog --msgbox "Ready! Press <OK> to finish" 10 25
Это то, что я придумал после прочтения здесь и немного больше, один лайнер:
SEC=101;for i in `seq $SEC -1 1`;do printf "\rNext in: %`expr length $SEC`ds" "$i";sleep 1;done;echo
Более читаемый:
#!/bin/bash
SEC=101
for i in `seq $SEC -1 1`;do
printf "\rNext in: %`expr length $SEC`ds" "$i";
sleep 1;
done
echo
Где можно установить SEC к любому положительному целому числу, и printf позаботится о соответствующем заполнении. Протестировано под Ubuntu и cygwin.
Это то, что я придумал после прочтения здесь и немного больше, один лайнер:
SEC = 101; для i в `seq $ SEC -1 1`; do printf "\rNext in:%` expr length $ SEC`ds "" $ i "; sleep 1; done; echo
Более читаемый:
# ! / bin / bash SEC = 101 для i в `seq $ SEC -1 1`; do printf" \rNext in:% `expr length $ SEC`ds" "$ i"; сон 1; done echo
Если SEC может быть настроен на любое положительное целое число, и printf позаботится о соответствующем заполнении. Протестировано под Ubuntu и cygwin.
В дополнение к \r
или \ b
подходам можно использовать управляющий символ \ 033 [2K
, который сообщает терминалу очистить всю строку. Преимущество этого по сравнению с \ b
заключается в том, что вам не нужно сопоставлять число \ b
с количеством символов, которое вы хотите удалить, и по сравнению с \r
не будет символов, торчащих на экране, если новая строка короче старой.
Ниже приведен пример того, как он может быть применен к этому вопросу, а здесь является примером связанного приложения для создания вывода, аналогичного загрузочным сообщениям. В этом конкретном примере таймер исчезнет после достижения 0-й секунды, а линия таймера будет заменена на «Готов!». фраза.
#! / bin / bash sek = 60 эхо "60 секунд" while ((sek--)); do printf "Один момент, пожалуйста:% d" "$ sek" sleep 1 printf "\r% b" "\ 033 [2K" done echo "Ready!"
Другой альтернативой может быть использование команды dialog
для создания простых диалогов в командной строке. Диалог останется на экране в течение всего таймера и обновится с циклом, и к моменту его завершения таймер будет заменен на сообщение «Готово! Нажмите, чтобы выйти»:
#! / bin / bash sek = 60 эхо "60 секунд" while ((sek--)); do echo "$ sek" | dialog --progressbox «Please wait» 10 25 sleep 1 done dialog --msgbox «Готово! Нажмите & lt; OK & gt; для завершения» 10 25
С помощью bash вы можете использовать специальную переменную SECONDS
.
#BASH SECONDS = 0; в то время как сон .5 & amp; & amp; ((SECONDS & lt; = 60)); do printf '\r% s:% 2d' "Один момент, пожалуйста," "$ ((60-SECONDS))" done printf '\n'
Таймер обратного отсчета:
MIN = 1 & amp; & amp; для i в $ (seq $ (($ MIN * 60)) -1 1); do echo -n "$ i,"; сон 1; сделанный; echo -e "nnMessage"
и «нормальный» секундомер:
START = $ (дата +% s); хотя это правда; do CURRENT = $ (дата +% s); echo $ ((ТЕКУЩИЙ СТАРТ)); сон 1; echo -n; done
управление + c остановка
В основном то же, что и ответ aneeshep, но использует Return ( \r
), а не Backspace ( \ b
), потому что мы не знаем, будет ли длина всегда то же самое, например когда $ sek & lt; 10
.
Кроме того, ваш первый echo
должен использовать $ sek
, а не hard-code 60
.
Наконец, обратите внимание на пробел после ...
.
#! / bin / bash sek = 60 echo "$ sek Секунды ожидания !» в то время как [$ sek -ge 1] do echo -ne "One Moment please $ sek ... \r" sleep 1 sek = $ [$ sek-1] done echo echo "ready!"
Это то, что я придумал после прочтения здесь и немного больше, один лайнер:
SEC = 101; для i в `seq $ SEC -1 1`; do printf "\rNext in:%` expr length $ SEC`ds "" $ i "; sleep 1; done; echo
Более читаемый:
# ! / bin / bash SEC = 101 для i в `seq $ SEC -1 1`; do printf" \rNext in:% `expr length $ SEC`ds" "$ i"; сон 1; done echo
Если SEC может быть настроен на любое положительное целое число, и printf позаботится о соответствующем заполнении. Протестировано под Ubuntu и cygwin.
В дополнение к \r
или \ b
подходам можно использовать управляющий символ \ 033 [2K
, который сообщает терминалу очистить всю строку. Преимущество этого по сравнению с \ b
заключается в том, что вам не нужно сопоставлять число \ b
с количеством символов, которое вы хотите удалить, и по сравнению с \r
не будет символов, торчащих на экране, если новая строка короче старой.
Ниже приведен пример того, как он может быть применен к этому вопросу, а здесь является примером связанного приложения для создания вывода, аналогичного загрузочным сообщениям. В этом конкретном примере таймер исчезнет после достижения 0-й секунды, а линия таймера будет заменена на «Готов!». фраза.
#! / bin / bash sek = 60 эхо "60 секунд" while ((sek--)); do printf "Один момент, пожалуйста:% d" "$ sek" sleep 1 printf "\r% b" "\ 033 [2K" done echo "Ready!"
Другой альтернативой может быть использование команды dialog
для создания простых диалогов в командной строке. Диалог останется на экране в течение всего таймера и обновится с циклом, и к моменту его завершения таймер будет заменен на сообщение «Готово! Нажмите, чтобы выйти»:
#! / bin / bash sek = 60 эхо "60 секунд" while ((sek--)); do echo "$ sek" | dialog --progressbox «Please wait» 10 25 sleep 1 done dialog --msgbox «Готово! Нажмите & lt; OK & gt; для завершения» 10 25
С помощью bash вы можете использовать специальную переменную SECONDS
.
#BASH SECONDS = 0; в то время как сон .5 & amp; & amp; ((SECONDS & lt; = 60)); do printf '\r% s:% 2d' "Один момент, пожалуйста," "$ ((60-SECONDS))" done printf '\n'
Таймер обратного отсчета:
MIN = 1 & amp; & amp; для i в $ (seq $ (($ MIN * 60)) -1 1); do echo -n "$ i,"; сон 1; сделанный; echo -e "nnMessage"
и «нормальный» секундомер:
START = $ (дата +% s); хотя это правда; do CURRENT = $ (дата +% s); echo $ ((ТЕКУЩИЙ СТАРТ)); сон 1; echo -n; done
управление + c остановка
В основном то же, что и ответ aneeshep, но использует Return ( \r
), а не Backspace ( \ b
), потому что мы не знаем, будет ли длина всегда то же самое, например когда $ sek & lt; 10
.
Кроме того, ваш первый echo
должен использовать $ sek
, а не hard-code 60
.
Наконец, обратите внимание на пробел после ...
.
#! / bin / bash sek = 60 echo "$ sek Секунды ожидания !» в то время как [$ sek -ge 1] do echo -ne "One Moment please $ sek ... \r" sleep 1 sek = $ [$ sek-1] done echo echo "ready!"
Это то, что я придумал после прочтения здесь и немного больше, один лайнер:
SEC = 101; для i в `seq $ SEC -1 1`; do printf "\rNext in:%` expr length $ SEC`ds "" $ i "; sleep 1; done; echo
Более читаемый:
# ! / bin / bash SEC = 101 для i в `seq $ SEC -1 1`; do printf" \rNext in:% `expr length $ SEC`ds" "$ i"; сон 1; done echo
Если SEC может быть настроен на любое положительное целое число, и printf позаботится о соответствующем заполнении. Протестировано под Ubuntu и cygwin.
В дополнение к \r
или \ b
подходам можно использовать управляющий символ \ 033 [2K
, который сообщает терминалу очистить всю строку. Преимущество этого по сравнению с \ b
заключается в том, что вам не нужно сопоставлять число \ b
с количеством символов, которое вы хотите удалить, и по сравнению с \r
не будет символов, торчащих на экране, если новая строка короче старой.
Ниже приведен пример того, как он может быть применен к этому вопросу, а здесь является примером связанного приложения для создания вывода, аналогичного загрузочным сообщениям. В этом конкретном примере таймер исчезнет после достижения 0-й секунды, а линия таймера будет заменена на «Готов!». фраза.
#! / bin / bash sek = 60 эхо "60 секунд" while ((sek--)); do printf "Один момент, пожалуйста:% d" "$ sek" sleep 1 printf "\r% b" "\ 033 [2K" done echo "Ready!"
Другой альтернативой может быть использование команды dialog
для создания простых диалогов в командной строке. Диалог останется на экране в течение всего таймера и обновится с циклом, и к моменту его завершения таймер будет заменен на сообщение «Готово! Нажмите, чтобы выйти»:
#! / bin / bash sek = 60 эхо "60 секунд" while ((sek--)); do echo "$ sek" | dialog --progressbox «Please wait» 10 25 sleep 1 done dialog --msgbox «Готово! Нажмите & lt; OK & gt; для завершения» 10 25
С помощью bash вы можете использовать специальную переменную SECONDS
.
#BASH SECONDS = 0; в то время как сон .5 & amp; & amp; ((SECONDS & lt; = 60)); do printf '\r% s:% 2d' "Один момент, пожалуйста," "$ ((60-SECONDS))" done printf '\n'
Таймер обратного отсчета:
MIN = 1 & amp; & amp; для i в $ (seq $ (($ MIN * 60)) -1 1); do echo -n "$ i,"; сон 1; сделанный; echo -e "nnMessage"
и «нормальный» секундомер:
START = $ (дата +% s); хотя это правда; do CURRENT = $ (дата +% s); echo $ ((ТЕКУЩИЙ СТАРТ)); сон 1; echo -n; done
управление + c остановка
В основном то же, что и ответ aneeshep, но использует Return ( \r
), а не Backspace ( \ b
), потому что мы не знаем, будет ли длина всегда то же самое, например когда $ sek & lt; 10
.
Кроме того, ваш первый echo
должен использовать $ sek
, а не hard-code 60
.
Наконец, обратите внимание на пробел после ...
.
#! / bin / bash sek = 60 echo "$ sek Секунды ожидания !» в то время как [$ sek -ge 1] do echo -ne "One Moment please $ sek ... \r" sleep 1 sek = $ [$ sek-1] done echo echo "ready!"
С помощью bash вы можете использовать специальную переменную SECONDS
.
#BASH SECONDS = 0; в то время как сон .5 & amp; & amp; ((SECONDS & lt; = 60)); do printf '\r% s:% 2d' "Один момент, пожалуйста," "$ ((60-SECONDS))" done printf '\n'
Таймер обратного отсчета:
MIN = 1 & amp; & amp; для i в $ (seq $ (($ MIN * 60)) -1 1); do echo -n "$ i,"; сон 1; сделанный; echo -e "nnMessage"
и «нормальный» секундомер:
START = $ (дата +% s); хотя это правда; do CURRENT = $ (дата +% s); echo $ ((ТЕКУЩИЙ СТАРТ)); сон 1; echo -n; done
управление + c остановка
В основном то же, что и ответ aneeshep, но использует Return ( \r
), а не Backspace ( \ b
), потому что мы не знаем, будет ли длина всегда то же самое, например когда $ sek & lt; 10
.
Кроме того, ваш первый echo
должен использовать $ sek
, а не hard-code 60
.
Наконец, обратите внимание на пробел после ...
.
#! / bin / bash sek = 60 echo "$ sek Секунды ожидания !» в то время как [$ sek -ge 1] do echo -ne "One Moment please $ sek ... \r" sleep 1 sek = $ [$ sek-1] done echo echo "ready!"
Это то, что я придумал после прочтения здесь и немного больше, один лайнер:
SEC = 101; для i в `seq $ SEC -1 1`; do printf "\rNext in:%` expr length $ SEC`ds "" $ i "; sleep 1; done; echo
Более читаемый:
# ! / bin / bash SEC = 101 для i в `seq $ SEC -1 1`; do printf" \rNext in:% `expr length $ SEC`ds" "$ i"; сон 1; done echo
Если SEC может быть настроен на любое положительное целое число, и printf позаботится о соответствующем заполнении. Протестировано под Ubuntu и cygwin.
В дополнение к \r
или \ b
подходам можно использовать управляющий символ \ 033 [2K
, который сообщает терминалу очистить всю строку. Преимущество этого по сравнению с \ b
заключается в том, что вам не нужно сопоставлять число \ b
с количеством символов, которое вы хотите удалить, и по сравнению с \r
не будет символов, торчащих на экране, если новая строка короче старой.
Ниже приведен пример того, как он может быть применен к этому вопросу, а здесь является примером связанного приложения для создания вывода, аналогичного загрузочным сообщениям. В этом конкретном примере таймер исчезнет после достижения 0-й секунды, а линия таймера будет заменена на «Готов!». фраза.
#! / bin / bash sek = 60 эхо "60 секунд" while ((sek--)); do printf "Один момент, пожалуйста:% d" "$ sek" sleep 1 printf "\r% b" "\ 033 [2K" done echo "Ready!"
Другой альтернативой может быть использование команды dialog
для создания простых диалогов в командной строке. Диалог останется на экране в течение всего таймера и обновится с циклом, и к моменту его завершения таймер будет заменен на сообщение «Готово! Нажмите, чтобы выйти»:
#! / bin / bash sek = 60 эхо "60 секунд" while ((sek--)); do echo "$ sek" | dialog --progressbox «Please wait» 10 25 sleep 1 done dialog --msgbox «Готово! Нажмите & lt; OK & gt; для завершения» 10 25
Это то, что я придумал после прочтения здесь и немного больше, один лайнер:
SEC = 101; для i в `seq $ SEC -1 1`; do printf "\rNext in:%` expr length $ SEC`ds "" $ i "; sleep 1; done; echo
Более читаемый:
# ! / bin / bash SEC = 101 для i в `seq $ SEC -1 1`; do printf" \rNext in:% `expr length $ SEC`ds" "$ i"; сон 1; done echo
Если SEC может быть настроен на любое положительное целое число, и printf позаботится о соответствующем заполнении. Протестировано под Ubuntu и cygwin.
В дополнение к \r
или \ b
подходам можно использовать управляющий символ \ 033 [2K
, который сообщает терминалу очистить всю строку. Преимущество этого по сравнению с \ b
заключается в том, что вам не нужно сопоставлять число \ b
с количеством символов, которое вы хотите удалить, и по сравнению с \r
не будет символов, торчащих на экране, если новая строка короче старой.
Ниже приведен пример того, как он может быть применен к этому вопросу, а здесь является примером связанного приложения для создания вывода, аналогичного загрузочным сообщениям. В этом конкретном примере таймер исчезнет после достижения 0-й секунды, а линия таймера будет заменена на «Готов!». фраза.
#! / bin / bash sek = 60 эхо "60 секунд" while ((sek--)); do printf "Один момент, пожалуйста:% d" "$ sek" sleep 1 printf "\r% b" "\ 033 [2K" done echo "Ready!"
Другой альтернативой может быть использование команды dialog
для создания простых диалогов в командной строке. Диалог останется на экране в течение всего таймера и обновится с циклом, и к моменту его завершения таймер будет заменен на сообщение «Готово! Нажмите, чтобы выйти»:
#! / bin / bash sek = 60 эхо "60 секунд" while ((sek--)); do echo "$ sek" | dialog --progressbox «Please wait» 10 25 sleep 1 done dialog --msgbox «Готово! Нажмите & lt; OK & gt; для завершения» 10 25
В основном то же, что и ответ aneeshep, но использует Return ( \r
), а не Backspace ( \ b
), потому что мы не знаем, будет ли длина всегда то же самое, например когда $ sek & lt; 10
.
Кроме того, ваш первый echo
должен использовать $ sek
, а не hard-code 60
.
Наконец, обратите внимание на пробел после ...
.
#! / bin / bash sek = 60 echo "$ sek Секунды ожидания !» в то время как [$ sek -ge 1] do echo -ne "One Moment please $ sek ... \r" sleep 1 sek = $ [$ sek-1] done echo echo "ready!"
Таймер обратного отсчета:
MIN = 1 & amp; & amp; для i в $ (seq $ (($ MIN * 60)) -1 1); do echo -n "$ i,"; сон 1; сделанный; echo -e "nnMessage"
и «нормальный» секундомер:
START = $ (дата +% s); хотя это правда; do CURRENT = $ (дата +% s); echo $ ((ТЕКУЩИЙ СТАРТ)); сон 1; echo -n; done
управление + c остановка
С помощью bash вы можете использовать специальную переменную SECONDS
.
#BASH SECONDS = 0; в то время как сон .5 & amp; & amp; ((SECONDS & lt; = 60)); do printf '\r% s:% 2d' "Один момент, пожалуйста," "$ ((60-SECONDS))" done printf '\n'
SECONDS
Эта переменная расширяется до количества секунд с момента запуска оболочки. i> (поэтому я, вероятно, не установил бы это до 0 .. просто проверьте его на 60 секунд больше с момента запуска скрипта) .. +1
– Peter.O
4 February 2011 в 04:17
Может достичь этого, установив возврат каретки \r
.
В одной строке кода это возможно с помощью echo -ne
for i in {60..1}; do echo -ne "One moment please: $i\r" && sleep 1; done
или с printf
for i in {60..1}; do printf "One moment please: $i\r" && sleep 1; done