Tôi nghĩ rằng điều này không đơn giản như người ta nghĩ. Bạn phải chặn STDOUT, vì các chương trình bên ngoài trực tiếp ghi vào kênh đó.
Sau đây là một loại bằng chứng của khái niệm . Xin lưu ý rằng điều này sẽ phá vỡ rất nhiều thứ, cụ thể là các chương trình tương tác man
, less
v.v. Vì vậy, nó không thể sử dụng hàng ngày, nhưng để dễ dàng định dạng phiên shell cho bài đăng trên ví dụ SU.
Cách tiếp cận này đã được đăng tải bởi Atom Smasher trên danh zsh-users
sách gửi thư trên Sat, ngày 16 tháng 5 năm 2009 để tô màu STDERR
. Tôi chấp nhận nó theo yêu cầu của bạn:
# ## 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)
Phần khó khăn là exec > >(indent_output)
xử lý đầu ra hoàn chỉnh của vỏ thay thế thông qua indent_output
chức năng. Các precmd
định nghĩa là cần thiết để tránh tình trạng chủng tộc, nếu không kịp thời mới được in trước khi sản lượng thực tế của các lệnh thực thi.
Đây là một bản demo:
% 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.
%
%
Bạn có thể thoát khỏi %
dấu hiệu trước mỗi lời nhắc (biểu thị rằng dòng cuối cùng không kết thúc CR
) với hai tùy chọn sau:
setopt PROMPT_CR NO_PROMPT_SP
%
biểu tượng ngộ nghĩnh đó vào phía dưới, (b) cung cấp các trang man và (c) đẩyls
vào một cột duy nhất. Tuy nhiên, việc mất màu cho đầu ra git có thể là một công cụ đối phó với tôi.