Я думаю, що це не так просто, як можна подумати. Ви повинні перехопити STDOUT, оскільки зовнішні програми безпосередньо записують на цей канал.
Нижче наведено вид a доказ концепції . Майте на увазі, що це порушить багато речей, а саме інтерактивних програм man, less Так що це не можна використовувати для повсякденного використання, але легко форматувати сеанс оболонки для публікації, наприклад, SU.
Цей підхід був опублікований Atom Smasher на zsh-users списку розсилки Sat, 16 May 2009 розфарбувати STDERR. Я прийняв його відповідно до ваших вимог:
# ## indent_output.zsh ##
zmodload zsh/terminfo zsh/system
autoload is-at-least
indent_output() {
while sysread line
do
testline=${line//$'\n'/$'\n' }
syswrite " ${testline}"
done
}
precmd() { sleep 0 }
## i'm not sure exactly how far back it's safe to go with this
## 4.3.4 works; 4.2.1 hangs.
is-at-least 4.3.4 && exec > >(indent_output)
Складна частина exec > >(indent_output) який обробляє повний вихід замінюваного оболонки через indent_output функції. The precmd визначення необхідно для того, щоб уникнути стану гонки, інакше новий рядок буде надруковано перед фактичним виведенням виконаної команди.
Ось демонстрація:
% source indent_output.zsh
% ls /bin | head
[.exe
2to3
2to3-3.2
411toppm.exe
7z
7za
7zr
a2p.exe
aaflip.exe
aclocal
%
% date
Sat, Nov 08, 2014 5:58:29 PM
%
% cat /usr/share/doc/foo
cat : /usr/share/doc/foo : No such file or directory
%
% cat /usr/share/doc/zsh-5.0.6/INSTALL| head
++++++++++++++
INSTALLING ZSH
++++++++++++++
This file is divided into two parts: making and installing the shell, a
note on the script run to set up the environment for new users, and
a description of various additional configuration options. You should
have a look at the items in the second and third parts before following the
instructions in the first.
%
%
Ви можете позбутися від % підписувати перед кожним запитом (що позначає, що останній рядок не закінчується CR ) з цими двома варіантами:
setopt PROMPT_CR NO_PROMPT_SP
%символ донизу, (b) доставляє сторінки, і (c) штовхаєlsдо одного стовпця. Тим не менш, втрата кольору для git вихід може бути угода вимикач для мене.