#c
#c
Вопрос:
Мне нужно создать утилиту, которая «обновляет» свои выходные данные, очень похожую на curl, которая продолжает изменять свою последнюю строку:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 8434 100 8434 0 0 4064 0 0:00:02 0:00:02 --:--:-- 7695
Я думаю, что использование чего-то вроде curses здесь не подходит. Я не хочу манипулировать окном, я хочу просто изменить свою последнюю строку вывода.
Решение, которое я имею в виду, состоит в том, чтобы напечатать количество обратных пробелов, достаточное для перезаписи строки. Но я еще не тестировал это. Я хотел бы знать, является ли это «правильным» способом сделать это, или если есть лучший.
Кроме того, в моем случае мне нужно обновить последнюю строку. Поэтому мне не нужно такое большое количество обратных пространств (если это решение); однако (чтобы сделать его универсальным), если мне нужно обновить строку -10, перезапись того же самого с -9th строки может быть не такой эффективной (или, может быть, это …).
Комментарии:
1. что ж, отличная раскраска синтаксиса для curl!
Ответ №1:
Вы можете использовать пробел в обратном направлении над строкой или (как правило, проще) напечатать возврат каретки и просто перепечатать всю строку. Когда вы это сделаете, не забудьте переписать всю строку, хотя — если (например) у вас есть число, отсчитывающее до 0, когда оно уменьшается со 100 до 99 (например), это не обязательно перезапишет ‘1’, если вы не убедитесь, что там напечатан пробел.
Комментарии:
1. Я должен был сказать, что я нахожусь на FreeBSD-Mac, и это предназначено для работы на Unix-подобных системах, но в любом случае спасибо. Также спасибо за совет по числам, я вижу, что форматирование должно быть исправлено.
2. @sidyll: Это должно отлично работать с FreeBSD-MAC и другими Unix-подобными системами.
3. Да, это работает! Какой сюрприз для меня, я думал, что возврат каретки будет проигнорирован. Вероятно, это потому, что я всегда вижу пары возврата каретки и перевода строки, поэтому эффект в моей системе похож только на перевод строки. Но
echo a^Mb
в bash появляется эхоb
. Фантастика. Пожалуйста, проигнорируйте мой предыдущий комментарий.
Ответ №2:
В DOS вы можете просто напечатать возврат каретки без перевода строки и перезаписать последнюю строку.