Как я могу захватить ввод/вывод скрипта в реальном времени (например, с tee), но по очереди вместо символа? Моя цель - захватить ввод, введенный в интерактивные подсказки скрипта, только после завершения обработки и последующего завершения обработки (после нажатия клавиши RETURN).Bash: как дублировать ввод/вывод из интерактивных скриптов только в полных строках?
В частности, я пытаюсь создать сценарий оболочки для ssh, который создает timestamped журнал команд, используемых на удаленных серверах. The script, который использует тройник для перенаправления вывода для фильтрации, работает хорошо, но перенаправленный вывод становится беспорядочным, когда я использую клавишу backspace или клавиши вверх/вниз для прокрутки моей удаленной истории. Например: service test stopexitservice test stopart
или cd ..logs[1Pls -al
.
Возможно, есть способ захватить прокрутку и перенаправить терминал, как с тройником?
Обновление: Я нашел character-based cleanup solution, который делает то, что я хочу большую часть времени. Тем не менее, я все еще надеюсь на ответ на этот вопрос (который вполне может быть ответом msw, что это очень сложно сделать).
Попробуйте этот ответ от unix.stackexchange.com: http://unix.stackexchange.com/questions/ 14684/remove-control-chars-including-console-codes-colors-from-script-output. Однако вам лучше использовать историю bash на удаленной машине. – rici
Поскольку я так часто подключаюсь к множеству разных удаленных серверов, мне нужен автоматический способ ведения журналов локально. Один из ответов в вашей ссылке обрабатывает завершение обратного пробела, но не завершение команды вверх/вниз, что приводит к журналу, например, «service test stopexitservice test stopart» при прокрутке через команды «exit», «stop service stop» и ' (даже если я фактически не использую эти команды). Однако, спасибо! – Oleg
Создайте новый файл истории (с отметками времени) для каждого сеанса входа в систему. Удостоверьтесь, что он обновляется часто. Напишите небольшой crontask, который перемещает файлы истории (с sftp) в локальный репозиторий. Возможно, поможет rsync. Если необходимо, напишите обертку ssh, которая записывает, к каким удаленным компьютерам вы подключились (но тогда вам нужно избегать ssh с удаленной машины.) Еще одна опция: использовать sshfs для хранения файлов истории на вашем локальном компьютере. – rici