Tôi có thể tìm tài liệu tham khảo đầy đủ cho biến $ PS1 ở đâu?


20

Biến PS1 mặc định trên máy của tôi (Kubfox 13.10) là:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

Tôi đang tìm một tài liệu tham khảo về cách biến $ PS1 hoạt động ở mức tối thiểu cho phép tôi hiểu biến PS1 ở trên.


@ RaduRădeanu Bây giờ tôi đã chuyển nó sang một câu trả lời riêng.
Đánh dấu Raymond

Như một lưu ý chung, bạn có thể giải quyết vấn đề này bằng cách đặt giá trị của PS1trong một thiết bị đầu cuối, vd PS1="How r u, \u?". Thay đổi sẽ chỉ kéo dài cho đến khi bạn đóng thiết bị đầu cuối.
djvg

Câu trả lời:


24

Tài liệu tham khảo

Cho đến nay, không có một tài liệu tham khảo nào cho tất cả mọi thứ có thể xuất hiện trong dấu nhắc Bash - nhưng vì đây là một tính năng đã phát triển qua nhiều thập kỷ và có thể thay đổi từ bản phân phối sang bản phân phối, có lẽ đó là quá nhiều để hỏi. Tôi đã cố gắng tóm tắt những gì tôi thấy hữu ích nhất ở đây.

Cách thực hiện này là đầy đủ nhất, nhưng rất dài và lan man. Một số phần hữu ích hơn:

  • Mục 2.42.5 giải thích các vấn đề cơ bản của cài đặt PS1, bao gồm các ký tự thoát (có thể in).
  • Phần 3,4 giải thích tại sao \[\]cần thiết.
  • Phần 6 giải thích tất cả các chuỗi thoát chính (không in được) mà bạn có thể muốn sử dụng, bao gồm đặt màu của dấu nhắc và tiêu đề của cửa sổ xterm.

Hướng dẫn này giải thích cách ${}hoạt động của Bash nói chung và câu hỏi Hỏi Ubuntu này giải thích thêm một chút về cách hoạt động của nó debian_chroot.

Giữa những điều đó, tôi nghĩ rằng mọi ký tự trong biến Ubuntu PS1 mặc định đều được giải thích.

Giải thích về lời nhắc Ubuntu

Có ba phần để nhắc:

  • \[\e]0;\u@\h: \w\a\] đặt thanh tiêu đề của cửa sổ xterm:

    • \[ bắt đầu một phần các ký tự không in được
    • \e]0; là chuỗi thoát cho 'set xterm title' (Tôi tin rằng các số khác 0 sẽ đặt các thuộc tính xterm khác, mặc dù tôi chưa thử nghiệm điều này)
    • \u@\h: \wtiêu đề để sử dụng (xem dưới đây để biết \u, \h\w)
    • \a đánh dấu sự kết thúc của tiêu đề
    • \] đánh dấu sự kết thúc của các ký tự không in được
  • ${debian_chroot:+($debian_chroot)}mở rộng đến giá trị của $ debian_chroot trong ngoặc đơn nếu $ debian_chroot được đặt. Xem câu hỏi này để biết thêm thông tin về $ debian_chroot.
  • \u@\h:\w\$ là dấu nhắc của chính nó:

    • \u mở rộng đến tên người dùng hiện tại
    • \h mở rộng đến tên máy chủ hiện tại
    • \w mở rộng đến thư mục làm việc hiện tại
    • \$mở rộng để #root và $cho tất cả người dùng khác

6

Theo tài liệu tham khảo Bash , PS1là:

Chuỗi dấu nhắc chính. Giá trị mặc định là \s-\v\$. Xem Kiểm soát lời nhắc , để biết danh sách đầy đủ các chuỗi thoát được mở rộng trước khi PS1được hiển thị.

Một số tài liệu tham khảo tốt khác có thể là:


Hướng dẫn bash mô tả các chuỗi PS1 thoát đầy đủ: gnu.org/software/bash/manual/bashref.html#Printing-a-Prompt
glenn jackman

@Radu - Cảm ơn, điều đó đã giúp tôi tiến xa hơn tôi đã có trước đây. Dường như vẫn còn ít thông tin về những gì có thể đi vào bên trong \[\], mặc dù vậy - bạn có bất kỳ tài liệu tham khảo nào cho điều đó không?
Mark Raymond

@MarkRaymond Điều đó được giải thích trong hai liên kết mà tôi đã đưa cho bạn ( In lời nhắc PromptPS1 được giải thích cho Linux / Unix ): \[- bắt đầu một chuỗi các ký tự không in, có thể được sử dụng để nhúng chuỗi điều khiển đầu cuối vào dấu nhắc; \]- kết thúc một chuỗi các ký tự không in. Chỉ cần dành thời gian của bạn và đọc một cách cẩn thận;)
Radu Rădeanu

Vâng, tôi đã đọc điều đó - tôi đang tìm kiếm một tài liệu tham khảo về những gì các nhân vật không in ấn đó làm. Xin lỗi nếu tôi không rõ ràng!
Đánh dấu Raymond


5

ss64.com dường như có tài liệu tham khảo tốt nhất mà tôi đã tìm thấy.

Nó giải thích các biến sau:

\d   The date, in "Weekday Month Date" format (e.g., "Tue May 26"). 

\h   The hostname, up to the first . (e.g. deckard) 
\H   The hostname. (e.g. deckard.SS64.com)

\j   The number of jobs currently managed by the shell. 

\l   The basename of the shell's terminal device name. 

\s   The name of the shell, the basename of $0 (the portion following 
    the final slash). 

\t   The time, in 24-hour HH:MM:SS format. 
\T   The time, in 12-hour HH:MM:SS format. 
\@   The time, in 12-hour am/pm format. 

\u   The username of the current user. 

\v   The version of Bash (e.g., 2.00) 

\V   The release of Bash, version + patchlevel (e.g., 2.00.0) 

\w   The current working directory. 
\W   The basename of $PWD. 

\!   The history number of this command. 
\#   The command number of this command. 

\$   If you are not root, inserts a "$"; if you are root, you get a "#"  (root uid = 0) 

\nnn   The character whose ASCII code is the octal value nnn. 

\n   A newline. 
\r   A carriage return. 
\e   An escape character. 
\a   A bell character.
\\   A backslash. 

\[   Begin a sequence of non-printing characters. (like color escape sequences). This
     allows bash to calculate word wrapping correctly.

\]   End a sequence of non-printing characters.

Các \[ ... \]định nghĩa một loạt các ký tự không in. Họ được yêu cầu theo dõi vị trí con trỏ một cách chính xác.

Các \etrong khởi động nhanh chóng của bạn một dãy thoát. Thông tin thêm về những người ở đây (lưu ý "Esc" trên trang đó là \etrình tự).

  • Lưu ý: Tôi chưa bao giờ thực sự thích các chuỗi thoát. Sử dụng tputđể có được mã thoát cho bạn.

${debian_chroot:+($debian_chroot)}là mở rộng tham số. Xem tại đây

  • Nó viết ($debian_chroot)nếu $debian_chrootđược đặt khác không có gì.
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.