Я всегда помещал пустую строку в конец. Я думаю, что это выглядит более чистым, и некоторый дроссель программ на последней строке, если нет новой строки.
К сожалению, это будет довольно трудно. Протокол между приложениями и терминалом OS X является вариантом VT100 / управляющий протокол терминала ANSI, конкретно протокол XTerm.
Это включает набор предположений об экранном положении, и т.д., который был бы сложен для переотображения на мир, где дисплей был инвертирован.
Еще хуже, весь Ваш эмулятор терминала добирается, строка "помещенного этот символ в этом положении" команды типа. Нет никакого различия, сделанного между командной строкой и выводом команды, выполненной им, таким образом, Вы не можете сделать одной вещи для обеих частей - по крайней мере, не без сотрудничества от оболочки внизу.
Оболочка и программы, предполагают, что экран продолжается вверх - новые данные внизу и продолжается вниз навсегда.
Вам можно было, по крайней мере теоретически, изменить Ваш эмулятор терминала так, чтобы он отобразил строки в обратном порядке - "нижняя" строка сначала, и так далее до "главной" строки внизу экрана.
Это инвертировало бы порядок строк в выводе команды, тем не менее, таким образом, остальная часть содержания будет всплывающий назад также. Если Вы хотели команды (например: ls, кошка) бежать, но подсказки для продвижения жизни более твердо.
Я не знаю программного обеспечения, которое реализует это. (..., но см. комментарий JdeBD к этому для ссылки на одну.) :)
В ударе это отобразит текущую подсказку/команду наверху и ее вывод ниже, но без прокрутки или предыдущих команд:
PROMPT_COMMAND='tput cup 0 0; tput el; tput el1'
Эта функция поместит предыдущие команды ниже, но необходимо передать каждую команду по каналу к ней индивидуально. К сожалению, exec > >(f)
не может помочь с этим, поскольку это перенаправляет весь удар, не отдельные команды. Вот функция:
f () { tee ~/.STDIN | wc -l | xargs expr 1 + | xargs tput il && cat ~/.STDIN; }
Затем выполните каждую команду как:
command args |f
Это сохраняет вывод, создает много пустых строк, равных length+1, затем откладывает вывод в. Можно наклеить строку в конце, который отобразит поддельное быстрое или горизонтальное правило, если Вам нравится. Например.
printf '%*s' $COLUMNS | tr ' ' _;
Как дерьмо, но автоматическая альтернатива этой целой функциональной вещи, мы можем добавить команду в конец нашего более раннего $PROMPT_COMMAND, который очищает несколько произвольные 11 строки:
PROMPT_COMMAND='tput cup 0 0; tput el; tput el1; tput il 11'
Можно также использовать tput -S
избегать нескольких двоичных вызовов.
Я добрался $PROMPT_COMMAND
от https://github.com/swirepe/alwaysontop.
Несмотря на то, что это не будет точно обратный вывод, он сохранит вашу подсказку наверху:
https://github.com/swirepe/alwaysontop
, чтобы использовать его:
git clone https://github.com/swirepe/alwaysontop.git
cd alwaysontop/
source alwaysontop.sh
Если вы решите, что вам нравится, просто источнив его в своем .bash_profile с чем-то вроде:
echo "source ~/alwaysontop/alwaysontop.sh" >> ~/.bash_profile