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

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

19.11.2024, 21:57. Показов 2616. Ответов 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
Нарушитель
452 / 896 / 106
Регистрация: 23.11.2021
Сообщений: 5,240
Записей в блоге: 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
Нарушитель
452 / 896 / 106
Регистрация: 23.11.2021
Сообщений: 5,240
Записей в блоге: 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
Нарушитель
452 / 896 / 106
Регистрация: 23.11.2021
Сообщений: 5,240
Записей в блоге: 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
Нарушитель
452 / 896 / 106
Регистрация: 23.11.2021
Сообщений: 5,240
Записей в блоге: 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
3310 / 937 / 202
Регистрация: 14.01.2013
Сообщений: 4,797
20.11.2024, 16:39
Цитата Сообщение от Eddy_Em Посмотреть сообщение
какой в этом вообще смысл? Зачем забивать мусором выхлоп?
Запустишь ты, скажем, ls, а тебе перед каждым выйдет дата-время. А если ты через трубу это куда-то передашь? Еще веселей будет…
У меня такие же мысли. Смысла в таком выхлопе - 0.
0
 Аватар для volodin661
7177 / 2354 / 354
Регистрация: 10.12.2013
Сообщений: 8,157
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
 Аватар для volodin661
7177 / 2354 / 354
Регистрация: 10.12.2013
Сообщений: 8,157
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
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru