Несвідомо запустив нескінченну петлю в терміналі


9

Я скопіював наведений нижче код з якогось випадкового джерела на свій термінал і побіг:

while sleep 1;
  do tput sc;
  tput cup 0 $(($(tput cols)-29));
  date;
  tput rc;
done &

Код полягає в тому, щоб у верхньому правому куті терміналу відображатись біг годинника. Фрагмент працював дуже добре і точно робив те, що я цього хотів, але тепер я просто хочу закінчити цю петлю і позбутися від годинника.

Також мені потрібно зрозуміти наведений вище код. У мене є якась ідея, оскільки я знаю, що tputробить команда, але все ж є багато точок, які я не в змозі підключити.


1
Ви можете запустити jobsсвій сеанс, щоб перелічити активні фонові завдання, а потім викласти його на перший план, ввівши fg <job number>. Після введіть Ctrl + C, щоб зупинити цей нескінченний цикл. Цей сценарій працює лише в терміналі, який запускає фрагмент.
Юрій Гончарук

Дуже дякую, дуже чистий спосіб позбутися петлі. Це має стати прийнятою відповіддю.
Картік Чаухан

Будь ласка! Я ставлю це як відповідь нижче.
Юрій Гончарук

1
Зауважте, що просто закриття вікна терміналу також припинить усі додані до нього запущені завдання.
trlkly

У вас тут два питання. Чи можете ви розділити 2-е, до нового питання.
ctrl-alt-delor

Відповіді:


15

Ви можете запустити jobsкоманди у своєму сеансі, щоб перелічити активні фонові завдання, а потім поставити їх на перший план, ввівши fg <job number>. Потім введіть Ctrl+, Cщоб зупинити цю нескінченну петлю.

Цей сценарій працює лише в терміналі, який запускає фрагмент.


Пояснення:

tput sc - збереження позиції курсору.

tput cup 0 $(($(tput cols)-29))- перемістіть курсор у положення 0осі Y та (count of screen columns minus 29)осі X.

date - просто надрукуйте поточну дату.

tput rc - відновити положення курсору.

while sleep 1; ... do ... ; done - петля із затримкою на 1 секунду.

Наберіть, help whileщоб дізнатися більше про whileцикл у оболонці та дотримуйтесь man 1 tput або tldp tput doc, щоб знати, як працює tput.


Я все ще хотів би знати, як зробив код, що він зробив.
Картік Чаухан

@KartikChauhan Я також поклав деякі пояснення.
Юрій Гончарук

@KartikChauhan Ви праві! Дякую! Я щойно це виправив.
Юрій Гончарук

3
kill %1(або інша кількість, якщо є кілька робочих місць) є альтернативою fg+Ctrl-C
Роман Одайський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.