Ý nghĩa của \ [\ e] 0; trong PS1 bằng .bashrc


9

Trong .bashrc

case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

Tôi hiểu ${debian_chroot:+($debian_chroot)}\u@\h: \w, nhưng không \[\e]0;. Nó làm gì?

Câu trả lời:


11

Đâ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\asẽ đặ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


1
TLDR; Trình tự đó đặt thanh tiêu đề vào thư mục làm việc.
David Refoua

6

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 \evới \033ký 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 0là 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, xtermchấ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 12được thêm vào để phân biệt các biểu tượng và tiêu đề cửa sổ).

rxvtnhặ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 \achỉ 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:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.