Я думаю, все видели или пользовались разными чат-программами, например джаббер-клиентами, IRC-клиентами, веб-чатами.
Общее у них — это разделение области ввода и области вывода.
Почему подобное не используется в интерфейсе с компьютером?
Преимущества:
1. Многострочный ввод становится очень простым, например Ctrl-Enter или Shift-Enter переводит строку, просто Enter посылает на исполнение. Или наоборот. Копирование шелл-команды даже с переводами строк не посылает её на исполнение.
2. Если работающая в фоновом режиме программа послала сообщение на stdout или stderr, то оно никак не повлияет на поле ввода.
3. Как команды пользователя, так и ответы системы (результаты выполнения программы) могут сопровождаться метками времени, позволяющими узнать, сколько заняло исполнение команды без time. Кроме того, можно узнать, прочитав лог консоли, когда была выполнена та или иная команда.
4. Потенциально можно было бы отличать выводы разных команд и снабжать их соответствующими пометками (как в групповом чате сообщения разных пользователей).
5. Эти логи можно автоматически сохранять в текстовые файлы, что бы потом найти, какие команды ты вводил месяц или два назад и какой был их результат.
6. В поле ввода и вывода можно реализовать подсветку синтаксиса у введённой команды.
Недостатки:
1. Псевдографические (nano, mc, top) приложения не будут работать.
2. Не будет совместимости с графическими телетайпами типа VT100.
Есть ли такие терминальные программы для GNU/Linux? Пробовали? Как впечатления?