Câu trả lời:
Đây \e]0;
là một chuỗi thoát; \e
được thay thế bằng ASCII 27 (ESC), do đó, thiết bị đầu cuối nhận được 4 ký tự ESC ] 0 ;
cho xterm đặt biểu tượng và thanh tiêu đề, kết thúc bằng BEL ( \a
).
Vì vậy, chuỗi \e]0;STUFFGOESHERE\a
sẽ đặt tiêu đề của thiết bị đầu cuối thành STUFFGOESHERE. Trong ví dụ của bạn, nó sẽ đặt tiêu đề thành người dùng / máy chủ / đường dẫn.
FWIW, các chuỗi thoát xterm được ghi lại tại: https://www.x.org/docs/xterm/ctlseqs.pdf
Các nhân vật \e[0;
trong dòng
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
được giải thích bởi shell (tương đương \e
với \033
ký tự thoát ASCII ESC ), bắt đầu một chuỗi thoát. Chuỗi kết thúc vào \a
(tương tự được diễn giải bằng tiếng chuông \ 007` ASCII BEL ).
Đây 0
là một tham số (đối với cái được gọi là lệnh hệ điều hành ), cho biết thiết bị đầu cuối thay đổi cả tiêu đề biểu tượng và cửa sổ.
Về mặt kỹ thuật, nó phải là \e\\
(ECMA-48), tuy nhiên đó không phải là cách nó bắt đầu. Khi tính năng này được giới thiệu lần đầu tiên vào năm 1986, xterm
chấm dứt tiêu đề trên ký tự không in đầu tiên. Cái \a
đã được công nhận là bộ kết thúc chuỗi bởi xterm kể từ X11R4 năm 1989 (khi các tham số riêng biệt 1
và 2
được thêm vào để phân biệt các biểu tượng và tiêu đề cửa sổ).
rxvt
nhặt này lên một vài năm sau đó, và một vài năm xterm sau đó đã được sửa đổi để cũng chấp nhận một chuỗi terminator chuẩn. Không có điểm đặc biệt nào được thực hiện trong thay đổi, nhưng nó xuất hiện vào ctlseqs.ms
đầu tháng 8 năm 1996. Nói chung khi các thiết bị đầu cuối khác đã triển khai tính năng mà chúng \a
chỉ chấp nhận .
Nếu không có kết thúc, ký tự thoát bị cô lập có thể được coi là một lỗi theo cách cụ thể của thiết bị đầu cuối (bao gồm cả việc bỏ qua văn bản hoàn toàn).
Đọc thêm: