<p>Is there a terminal program that shows the difference between input, standard output, error output, the prompt, and user-entered commands?  It should also show when standard input is needed vs. running a command.</p>

<p>One way would be to highlight each differently.  The cursor could change color depending on if it was waiting for a command, running a command, or waiting for standard input.</p>

<p>Another way would be to have 3 frames -- a large frame on the top for output (including prompt and commands running), a small frame near the bottom for standard input, and an one-line frame at the bottom for command line input.  That would possibly even allow running another command to provide input while the previous command is still waiting for standard input.</p>

<p>From <a href="http://jamesjava.blogspot.com/2007/09/terminal-window-with-3-frames.html" rel="nofollow noreferrer">http://jamesjava.blogspot.com/2007/09/terminal-window-with-3-frames.html</a></p>

[{'answer_id': 65142, 'author': 'elmarco', 'author_id': 1277510, 'author_profile': 'https://Stackoverflow.com/users/1277510', 'pm_score': 1, 'selected': False, 'text': '<p><a href="http://hotwire-shell.org/" rel="nofollow noreferrer">Hotwire</a> could be a good candidate, but it\'s not doing that out of the box, AFAIK</p>\n'}, {'answer_id': 102601, 'author': 'James A. N. Stauffer', 'author_id': 6770, 'author_profile': 'https://Stackoverflow.com/users/6770', 'pm_score': 0, 'selected': False, 'text': '<p>For now it appears that there is no such program.</p>\n'}, {'answer_id': 868030, 'author': 'Colin Macleod', 'author_id': 107626, 'author_profile': 'https://Stackoverflow.com/users/107626', 'pm_score': 0, 'selected': False, 'text': '<p>My program <a href="http://wiki.tcl.tk/gush" rel="nofollow noreferrer">gush</a> (Graphical User SHell) does part of this.\nIt uses different colours for commands and program stdin/stdout/stderr.\nNote that the traditional separation of shell and terminal makes this\nimpossible because the interface between them models an old serial\nterminal connection and therefore only has a single input and single\noutput channel.  I get around this problem by combining shell and\nterminal into one program.</p>\n\n<p>It would be nice to also indicate when a program is waiting for input,\nbut I don\'t think there\'s any way to detect this, unless you traced the\nsystem calls of the child program to detect when it tries to read stdin.\nFor interactive programs, you can guess that if the last output did not\nend with newline it\'s probably prompting for input, but this would not\nwork for non-interactive programs, eg. sed.</p>\n'}]
['https://Stackoverflow.com/questions/64768', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/6770/']