Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192

Временная метка для каждой строки вывода (после завершения команды, хочется видеть, когда вводить следующую команду?)

19.11.2024, 21:57. Показов 2399. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

В Терминале я вижу, когда команда завершена, я вижу, когда я могу вводить следующую команду

Кликните здесь для просмотра всего текста


Я использую это решение

https://unix.stackexchange.com/a/622928/675422

exec &> >( ts '%Y-%m-%d %H%M.%.S ' ) # prepend a timestamp to all output

Но когда команда завершена, я НЕ вижу, когда я могу вводить следующую команду

Кликните здесь для просмотра всего текста



Как сделать так, когда команда завершена, я буду видеть, когда я могу вводить следующую команду?

Кликните здесь для просмотра всего текста
Миниатюры
Временная метка для каждой строки вывода (после завершения команды, хочется видеть, когда вводить следующую команду?)   Временная метка для каждой строки вывода (после завершения команды, хочется видеть, когда вводить следующую команду?)   Временная метка для каждой строки вывода (после завершения команды, хочется видеть, когда вводить следующую команду?)  

Временная метка для каждой строки вывода (после завершения команды, хочется видеть, когда вводить следующую команду?)  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.11.2024, 21:57
Ответы с готовыми решениями:

Временная метка для каждой строки вывода (после завершения команды, хочется видеть, когда вводить следующую команду?)
Здравствуйте. В Терминале я вижу, когда команда завершена, я вижу, когда я могу вводить следующую команду ...

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

Временная метка директории
Всем привет. Кто может подсказать как в линуксе узнать временную метку последнего изменения директории, стандартными средствами или с...

32
Windows must die
610 / 883 / 104
Регистрация: 23.11.2021
Сообщений: 5,172
Записей в блоге: 19
20.11.2024, 14:36
Студворк — интернет-сервис помощи студентам
SharkyEXE, а какой в этом вообще смысл? Зачем забивать мусором выхлоп?
Запустишь ты, скажем, ls, а тебе перед каждым выйдет дата-время. А если ты через трубу это куда-то передашь? Еще веселей будет…
В общем, бредовая идея совершенно.
Если ты хочешь запускать что-то очень тормозное, то отправляй через трубу выхлоп хоть в тот же "ts". А остальное - не трожь!
2
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
20.11.2024, 14:41  [ТС]
volodin661, здравствуйте

Спасибо, ожидаю, не тороплю

Добавлено через 3 минуты
Eddy_Em, здравствуйте.

Да вообще мало что кому чего нужно, лишь бы кому-то чего-то что надо

Вам не надо, мне надо

Просто хочется саму суть - миссия выполнима, кто бы помог - это одно

Миссия невыполнима, вопросов больше не имею

При сборке прошивки для роутера - будет нормальный лог, какая дата и время отработки для каждой строки

Повторюсь, каждому чего нужно то и нужно

Одним не нужно, другим нужно

Не всегда "зачем?" можно ответить...

Прошивку в свое время собирал автоматическим сборщиком на github - понравилось как реализовано

См. картинку
Кликните здесь для просмотра всего текста


Потом отказался в пользу - дистрибутив linux, запуск терминала, ручной ввод команд - меня это устраивает, а все равно хочется, там писалось дата и время слева для каждой строки, а у меня "дистрибутив linux, запуск терминала, ручной ввод команд" - дата и время слева от каждой строки НЕ пишется
Миниатюры
Временная метка для каждой строки вывода (после завершения команды, хочется видеть, когда вводить следующую команду?)  
0
Windows must die
610 / 883 / 104
Регистрация: 23.11.2021
Сообщений: 5,172
Записей в блоге: 19
20.11.2024, 14:49
Цитата Сообщение от SharkyEXE Посмотреть сообщение
нормальный лог
Для этого нормальный софт нужно использовать, который пишет логи как надо, а не тяп-ляп.
Да и то: скажем, syslog пишет логи ядра через задницу: вместо timestamp ставится время в секундах с момента запуска демона. Поэтому для удобства обычно дефолтный формат timestamp меняют.
А уж пользовательский софт вообще - кто на что горазд. Наверное, каждый пишет в своей библиотечке реализацию логов. У меня тоже есть (но пришлось сделать страшное извращение: для каждой записи лог-файл сначала открывается, блокируется, потом в него пишется нечто, закрывается и разблокируется — иначе логгирование не работает в многопоточных приложениях, да и просто если ты fork делаешь, чтобы основным потоком перезапускать свой демон, если тот помрет) ☺

Цитата Сообщение от SharkyEXE Посмотреть сообщение
При сборке прошивки для роутера
Если ты ее сам собираешь - тебе и флаг в руки! Просто нужно пропатчить те места, где логи пишутся.

То, что хочешь ты, вообще ничего общего с логом не имеет - это ж тупой консольный выхлоп. Ни один демон ты так не запустишь, т.к. уважающий себя демон тут же закрывает stdin и stdout, да еще и SIGHUP блокирует. Это если предназначен для запуска openrc или т.п. А если он "сам по себе демон", то еще и fork делает (или просто запускает функцию daemon(), которая все необходимое делает).
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
20.11.2024, 14:51  [ТС]
Eddy_Em, здравствуйте

Повторюсь, я сам не смогу то, что мне нужно. Много информации, но мою затею не решит - мне не хотелось бы. Всего Вам хорошего и доброго
0
Windows must die
610 / 883 / 104
Регистрация: 23.11.2021
Сообщений: 5,172
Записей в блоге: 19
20.11.2024, 14:56
Цитата Сообщение от SharkyEXE Посмотреть сообщение
сам не смогу
Так здесь никто подобное не сможет! Либо баш патчить, либо вообще нарисовать свой примитивный шелл…
Ну или выше предлагали: попробовать "обертку" над readline (ведь именно он используется для ввода команд). Правда, здесь будет та же засада, что и с самопальным примитивным шеллом: т.к. "хвост" | ts … будет после каждой введенной строки вставляться, построчное введение циклов и т.п. станет невозможным. Как и какие-нибудь сложные конвейеры.

По-хорошему, стоило бы для начала внятно объяснить, что нужно. Правильно поставленный вопрос - уже почти половина ответа!
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
20.11.2024, 15:05  [ТС]
Цитата Сообщение от Eddy_Em Посмотреть сообщение
стоило бы для начала внятно объяснить, что нужно
1) Вывод даты/времени должен сопровождать каждую строку вывода
2) После завершения отработки команды должно быть приглашение
Вот такую картинку хочется

Просьба не спрашивать, зачем? мне такое - не могу знать
Просьба написать, что из картинки непонятно?
После ввода команды sudo apt update каждая строка работы команды sudo apt update слева пишется дата и время.
После завершения работы команды sudo apt update - приглашение вывелось (слева синие user с символом ~)
Просьба написать, что из что мне нужно непонятно?

Так здесь никто подобное не сможет! Либо баш патчить, либо вообще нарисовать свой примитивный шелл…
Ну или выше предлагали: попробовать "обертку" над readline (ведь именно он используется для ввода команд). Правда, здесь будет та же засада, что и с самопальным примитивным шеллом: т.к. "хвост" | ts … будет после каждой введенной строки вставляться, построчное введение циклов и т.п. станет невозможным. Как и какие-нибудь сложные конвейеры.
Повторюсь, много текста, технической информации - я уже 3й, 4й раз напишу - сам я не смогу, помочь помогите готовой конфетой, много текста, технической информации - мне от "много текста, технической информации" БЕЗ готовой конфеты - моей задумки от слова "соовсем" не решит
Не обижайтесь, пожалуйста
Миниатюры
Временная метка для каждой строки вывода (после завершения команды, хочется видеть, когда вводить следующую команду?)  
0
Windows must die
610 / 883 / 104
Регистрация: 23.11.2021
Сообщений: 5,172
Записей в блоге: 19
20.11.2024, 15:21
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Вывод даты/времени должен сопровождать каждую строку вывода
Однако, это противоречит вышесказанному - о логгировании.
Если действительно нужно только в выхлопе шелла, то все очень сложно.
Ну и хватит уже "сам не смогу". Всего-то 2-3 года упорного труда, и уже можно будет в линуксе легко ориентироваться. А чтобы ускорить процесс, сразу нужно ставить вменяемый дистрибутив. Желательно - Gentoo.

Добавлено через 3 минуты
PS. А запускать в фоне всякое, чтобы получать желаемый выхлоп в файле, можно, скажем, вот так:
Code
1
nohup your_cmd | ts > hohoho &
Проверить именно с ts не могу - не хочу устанавливать то, что мне не нужно.

Добавлено через 5 минут
Ну вот, с вышеприведенным скриптом проверил:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cat x
#!/bin/bash
for x in $(seq 1 10); do echo "--- $x"; sleep 1; done
 
nohup ./x | ./ts  > x.log &
 
# спустя 10 секунд
 
cat x.log
Wed Nov 20 15:20:40 2024 --- 1
Wed Nov 20 15:20:41 2024 --- 2
Wed Nov 20 15:20:42 2024 --- 3
Wed Nov 20 15:20:43 2024 --- 4
Wed Nov 20 15:20:44 2024 --- 5
Wed Nov 20 15:20:45 2024 --- 6
Wed Nov 20 15:20:46 2024 --- 7
Wed Nov 20 15:20:47 2024 --- 8
Wed Nov 20 15:20:48 2024 --- 9
Wed Nov 20 15:20:49 2024 --- 10
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
20.11.2024, 15:39  [ТС]
Eddy_Em, здравствуйте.

Напишу уже не знаю как проще

1) в операционной системе Linux (Ubuntu в частности) запускается приложение-программа Терминал. Команды вводить ТОЛЬКО в приложение-программа Терминал
2) после ввода команды sudo apt update каждая строка работы команды sudo apt update слева пишется дата и время.
3) после завершения работы команды sudo apt update - приглашение вывелось (слева синие user с символом ~)

Что куда файл посредник x.log, мне это не нужно x.log

Так сказать, я не знаю, как мне проще написать, что пункты с 1 по 3 - ТОЛЬКО в приложение-программа Терминал

Что там наваливается, пишется в другие файлы x.log, типа чтобы мне видеть, потом надо некие логи x.log открывать - мне это не нужно.

Есть приложение-программа Терминал - в ней работаю и в приложение-программа Терминал слева от строк пишется дата и время

Всё!
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,781
20.11.2024, 16:39
Цитата Сообщение от Eddy_Em Посмотреть сообщение
какой в этом вообще смысл? Зачем забивать мусором выхлоп?
Запустишь ты, скажем, ls, а тебе перед каждым выйдет дата-время. А если ты через трубу это куда-то передашь? Еще веселей будет…
У меня такие же мысли. Смысла в таком выхлопе - 0.
0
Нарушитель
7097 / 2328 / 353
Регистрация: 10.12.2013
Сообщений: 8,043
20.11.2024, 17:08
SharkyEXE,

GNU readline - это библиотека, которую использует bash при обработке пользовательского ввода.

https://ru.wikipedia.org/wiki/GNU_Readline

Есть возможность с помощью соотв. синтаксиса назначить нажимаемые пользователем символы на какие-либо действия.

Допустим, в твоем случае можно назначить клавишу <TAB> на добавление к польз. вводу последовательности " | ts"

Bash
1
bind '"\C-i": "\|ts"'
Таким образом, набираешь команду и затем вместо просто <ENTER> нажимаешь <TAB><ENTER> и получаешь желаемый эффект
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
21.11.2024, 11:07  [ТС]
volodin661, здравствуйте.

1) у меня Linux, Linux 64-bit Lite 6.0 (на базе Убунты 22.04) установлен на виртуальную машину
2) установил, настроил для меня под ключ, мол, запусти и собирай прошивку
3) сделал снимок, снапшот - чтобы что я косячу не косячу, всегда могу вернуть к нормальному, настроенному состоянию

Пожалуйста, от слова очень надо
Цитата Сообщение от volodin661 Посмотреть сообщение
опустим, в твоем случае можно назначить клавишу <TAB> на добавление к польз. вводу последовательности " | ts"
BashВыделить код
1
bind '"\C-i": "\|ts"'
Таким образом, набираешь команду и затем вместо просто <ENTER> нажимаешь <TAB><ENTER> и получаешь желаемый эффект
Нужно
1) без <TAB> добавление к польз. вводу последовательности " | ts"
2) просто <ENTER> нажимаю и получаю эффект
Мне видится так
1) запускаю терминал
2) ввожу команду sudo apt update
3) нажимаю Enter
4) у меня каждая строка работы команды sudo apt update имеет дату и время слева
Пожалуйста
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
23.11.2024, 12:33
SharkyEXE, Вам нужно запустить терминал программно (из какой-то своей проги) или речь о непосредственной работе Вас напрямую с приложением-программой Терминал?

А так надо учитывать следующее:
  1. При запуске команды в Терминале, если у каждой новой строки вывода префиксом идёт что-либо (та же дата или что-то другое) то обычно это делает сама команда, а не Терминал
  2. Терминал имеет в наличии эдакое свойство под названием prompt, на Ваших скринах он выглядит как "user ~". Сие свойство можно изменить, да бы оно показывало дату, текущую директорию или почти всё что угодно. Погуглите "prompt PS1"
  3. Цивилизованные методы на этом исчерпаны, дальше остаются подобия хаккинга. То есть, если Вам нужно что бы ЛЮБАЯ новая линия в терминале шла с префиксной датой, то надо перехватывать направленное на вывод в Терминале содержимое, модифицировать его (например подставлять дату каждый раз как встречается символ новой строки) и только потом передать приложению Терминал.

Тут фишка в том, не что Вам нужно а зачем Вам это нужно, что Вы этим хотите сделать. Если Вы хотите запустить Терминал программно, например через прогу что Вы пишите на С++, и мочь парсить выводы и подавать команды в Терминал, то есть другие способы, нет необходимости в датах на каждой строке и т.д. Это всё по-другому делается.
Если Вы просто хотите, что бы когда Терминал завершил команду, при ожидании ввода новой команды показывал Вам дату - то это проще простого, надо просто изменить PS1 (prompt).

Ваш ход.
0
Нарушитель
7097 / 2328 / 353
Регистрация: 10.12.2013
Сообщений: 8,043
23.11.2024, 18:47
SharkyEXE,

вот такие два байдена байнда решают дело ( Ctrl-M это <ENTER> ):

Bash
1
2
bind '"\C-\xff": accept-line'
bind '"\C-M": "\|ts\C-\xff"'

если вставить данные 2 строки, но без слова bind и одинарных кавычек, в пользовательский файл .inputrc, то в следующей
сессии данные сочетания будут уже определены.


PS: если понадобится девственный <ENTER>, то спасёт запасное сочетание Ctrl-j

Добавлено через 16 минут
Цитата Сообщение от SharkyEXE Посмотреть сообщение
При сборке прошивки для роутера - будет нормальный лог
учитывая вышенаписанное, я бы проводил все эти твои упражнения не в баш-сессии, а в сессии текст. редактора
( все приличные текст. редакторы юникс легко принимают команды bash и перенаправляют вывод в редактируемый буфер )

Из редактора Emacs, к примеру, люди не выходят годами, всё делается в нём.

Емаксом я не пользуюсь, но по редактору vim необходимые телодвижения могу подсказать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.11.2024, 18:47

Нужно прочитать файл построчно, но после каждой прочтенной строки вводить на консоль ответ (код есть)
Задача такая: есть файл. В нем три вопроса. Программа должна прочитать первый вопрос, вывести его на экран и, после ввода ответа, вывести...

Для заданной строки после каждой русской буквы поставить ее код, а после каждой латинской – символ «»
Для заданной строки после каждой русской буквы поставить ее код, а после каждой латинской – символ «».

Не происходит переход на следующую строку файла, после завершения считывания символов с первой
Посмотрите пожалуйста, почему не происходит переход на следующую строку, после завершения считывания символов с первой... В текстовом...

Ошибка - Временная метка выхода за пределы наносекунды
Добрый день! Записываю файл csv в таблицу БД и выходит ошибка: OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 3999-01-01...

Временная метка в наносекундах (DateTime.Ticks не подходит)
Как получить точное значение временной метки в наносекундах? (Для быстрых операций DateTime.Ticks не подходит, нужна большая точность)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru