Я думаю, що це не так просто, як можна подумати. Ви повинні перехопити 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 вихід може бути угода вимикач для мене.