Cách tùy chỉnh dấu nhắc lệnh trong bash

Trong bash shell, dấu nhắc lệnh là văn bản được hiển thị khi bạn được nhắc nhập. Trên hầu hết các hệ thống, có vẻ như thế này:

Trong lời nhắc, bạn có thể có thông tin trước khi chạy bất kỳ lệnh nào. Ví dụ, lời nhắc ở trên cho bạn thấy những điều sau đây.

  1. bạn là ai (người dùng có tên người dùng )
  2. bạn đang ở đâu (một máy tính có tên myhost )
  3. thư mục làm việc của bạn là gì ( ~, đó là viết tắt cho thư mục chính của bạn)

Có lẽ quan trọng nhất là ký hiệu đô la (" $ "), đây là một ký tự đặc biệt cho biết bạn đã đăng nhập với tư cách là người dùng không root. Nếu bạn hiện đang đăng nhập bằng root, ký tự này sẽ là dấu thăng (" # ") thay vào đó.

Chuỗi đại diện cho lời nhắc được lưu trữ trong biến môi trường đặc biệt có tên PS1 . Đối với lời nhắc ở trên, giá trị của nó trông giống như sau.

 "\ [email được bảo vệ] \ h: \ W \ $" 

Có bốn ký tự đặc biệt trong chuỗi này: \ u, \ h, \ W, \ $ . Đây là các chuỗi ký tự thoát được thay thế bằng các giá trị thực tế mỗi khi dấu nhắc được hiển thị.

Nhân vật đặc biệt

Các chuỗi ký tự đặc biệt được liệt kê trong bảng dưới đây có thể được sử dụng trong dấu nhắc bash shell.

Trình tự nhân vậtDịch sang
\ aNhân vật "báo động". Kích hoạt tiếng bíp hoặc đèn flash màn hình
\ dNgày hiện tại, được hiển thị theo định dạng Ngày tháng trong tuần (ví dụ: Thứ tư ngày 13 tháng 5 ).
\ D { định dạng }Ngày và giờ hiện tại được hiển thị theo định dạng như được giải thích bởi strftime Nếu định dạng bị bỏ qua, \ D {} hiển thị thời gian AM / PM 12 giờ hiện tại (ví dụ: 07:23:01 PM ).
\ eMột nhân vật thoát (ASCII 27)
\ e [ số mBiểu thị sự bắt đầu của một chuỗi để hiển thị màu, trong đó số là một số hoặc cặp số, xác định màu sắc và kiểu sẽ sử dụng. Xem bên dưới để biết danh sách các màu và cặp số của chúng.
\ e [mBiểu thị phần cuối của chuỗi để hiển thị màu.
\ hVí dụ, tên máy chủ của máy, cho đến " . " Đầu tiên, nếu tên máy chủ của hệ thống là myhost.mydomain, \ h sẽ hiển thị myhost
\ HTên máy chủ đầy đủ của máy.
\ jSố lượng công việc đang được quản lý bởi vỏ.
\ lMã định danh thiết bị đầu cuối của shell, thường là một số có một chữ số.
\ nMột dòng mới
\ rVận chuyển trở lại
\STên của shell (tên cơ sở của quá trình khởi tạo phiên bash hiện tại).
\ tThời gian hiện tại được hiển thị ở định dạng HH: MM: SS 24 giờ (ví dụ: 19:23:01 ).
\ TThời gian hiện tại được hiển thị ở định dạng HH: MM: SS 12 giờ (ví dụ: 07:23:01 ).
\ @Thời gian hiện tại được hiển thị ở định dạng HH: MM: SS AM / PM 12 giờ (ví dụ: 07:23:01 PM ).
\ AThời gian hiện tại ở định dạng HH: MM 24 giờ, (ví dụ: 19:23 ).
bạnTên người dùng của người dùng hiện tại.
\ vSố phiên bản Bash (ví dụ: 4.3 ).
\ VPhiên bản Bash và số bản vá (ví dụ: 4.3.30 ).
\ wThư mục hiện tại. Thư mục chính của người dùng được viết tắt là dấu ngã (" ~ "). Ví dụ: / usr / bin, ~ hoặc ~ / Documents
\Tên cơ sở của thư mục làm việc hiện tại (ví dụ: bin, ~ hoặc tài liệu ).
\!Số lịch sử của lệnh hiện tại.
\ #Số lệnh của lệnh hiện tại (số lệnh giống như số lịch sử, nhưng chúng đặt lại về 0 khi bạn bắt đầu phiên bash mới).
\ nnnKý tự ASCII có giá trị bát phân là nnn.
\Dấu gạch chéo ngược
\ [Đánh dấu sự bắt đầu của bất kỳ chuỗi ký tự không in nào, chẳng hạn như mã điều khiển đầu cuối.
\]Đánh dấu sự kết thúc của một chuỗi không in.
\ $In # nếu UID bằng 0 (siêu người dùng) hoặc $ nếu lớn hơn 0 (bất kỳ ai khác).

Thay đổi lời nhắc cho phiên hiện tại

Bạn có thể đặt biến môi trường PS1 giống như bất kỳ biến nào khác trong bash, với mẫu câu lệnh NAME = VALUE . Vì vậy, để đặt dấu nhắc tiêu chuẩn, bạn có thể nhập nội dung sau vào dòng lệnh.

 PS1 = "\ [email được bảo vệ] \ h: \ W \ $" 

Hãy nhắc nhở và ngay lập tức. Lưu ý không gian cuối cùng sau ký hiệu đô la trong chuỗi để có thêm khoảng trắng sau dấu nhắc của bạn, điều này giúp dễ dàng phân biệt các lệnh bạn nhập từ dấu nhắc. Không gian thêm không cần thiết, nhưng nó được khuyến khích.

Lưu ý rằng trong lệnh, không có khoảng trắng giữa PS1, = và chuỗi.

Thay đổi lời nhắc cho tất cả các phiên trong tương lai

Nếu bạn muốn thay đổi lời nhắc cho mỗi phiên mới, bạn cần chỉnh sửa các tệp khởi động bash của mình. Mỗi khi bạn bắt đầu một phiên cuối, các tệp sau, nếu chúng tồn tại, sẽ được đọc và thực thi dưới dạng tập lệnh:

/ etc / profile ~ / .bash_profile ~ / .bash_login

~ /.

Tệp đầu tiên, / etc / profile, là tập lệnh khởi động cho bất kỳ người dùng nào trên hệ thống bắt đầu phiên bash. Để thay đổi lời nhắc cho mọi người dùng, bạn cần chỉnh sửa tệp này và bạn cần có đặc quyền siêu người dùng để làm như vậy.

 sudo vi / etc / hồ sơ 

Ví dụ: lệnh trên sẽ nhắc bạn nhập mật khẩu và nếu bạn nằm trong danh sách sudoers, hãy mở tệp khởi động bash phổ biến dưới dạng siêu người dùng, sử dụng trình soạn thảo vi .

Ba tệp khác được tìm kiếm theo thứ tự được liệt kê ở trên và được thực hiện sau / etc / profile . Ba tệp này nằm trong thư mục chính của bạn, vì vậy chúng chỉ được thực hiện cho bạn. Họ có thể định nghĩa PS1 ở nhiều nơi, vì vậy bạn nên đọc kỹ các tệp để xem cách chúng được cấu hình trên hệ thống của bạn. Chẳng hạn, nhiều hệ thống sẽ sử dụng giá trị PS1 khác nhau tùy thuộc vào việc thiết bị đầu cuối của bạn có hỗ trợ màu hay không.

Bất kỳ một trong ba tệp có thể tồn tại và được sử dụng cho phiên bash của bạn, nhưng nếu có nhiều hơn một, chúng sẽ được thực hiện theo thứ tự được liệt kê.

Nếu bạn không muốn xóa hoặc thay đổi dòng trong tệp khởi động của mình, bạn cũng có thể thêm câu lệnh PS1 = mới vào cuối một trong các tệp của mình để áp dụng lời nhắc tùy chỉnh.

Thêm màu vào lời nhắc của bạn

Nếu bạn đang sử dụng thiết bị đầu cuối hỗ trợ màu (và có thể là bạn), bạn có thể thêm màu vào dấu nhắc của mình. Màu sắc được thêm vào bằng cách sử dụng các chuỗi ký tự đặc biệt theo định dạng này:

\ e [ số mBắt đầu một phần màu. Giá trị số là một số đặc biệt hoặc cặp số, chỉ định màu.
\ e [mbiểu thị sự kết thúc của phần màu; Đặt lại màu mặc định

Chẳng hạn, chuỗi dấu nhắc:

 PS1 = "\ e [1; 35m Đây là màu tím sáng. \ E [0; 35m ... và đây là màu tím đậm. \ E [m" 

Sẽ tạo ra một dấu nhắc giống như thế này:

Dưới đây là danh sách các màu bạn có thể sử dụng và các số chỉ định chúng:

SốMàu sắc / Phong cáchSốMàu sắc / Phong cách
0; 30Đen1; 30Màu xám đen
0; 31Màu đỏ1; 31Đỏ sáng
0; 32màu xanh lá1; 32Màu xanh lá cây tươi sáng
0; 33nâu1; 33Màu vàng
0; 34Màu xanh da trời1; 34Xanh nhạt
0; 35Màu tím1; 35Màu tím sáng
0; 36Lục lam1; 36Sáng Cyan
0; 37Xám1; 37trắng
4; 30Đen, gạch chân40nền: Xám đậm
4; 31Màu đỏ, gạch chân41nền: Đỏ
4; 32Màu xanh lá cây, gạch chân42nền: Xanh
4; 33Màu nâu, gạch chân43nền: Vàng
4; 34Màu xanh, gạch chân44nền: màu xanh
4; 35Màu tím, gạch chân45nền: màu tím
4; 36Cyan, gạch chân46nền: Cyan
4; 37Màu xám, gạch chân47Bối cảnh: Xám

Dưới đây là một số ví dụ và chúng trông như thế nào:

 PS1 = "\ e [0; 31mRed \ e [0; 32mGreen \ e [0; 33mBrown \ e [0; 34mBlue \ e [0; 35mPurple \ e [0; 36mCyan \ e [0; 37mGray \ e [m" 

 PS1 = "Gạch chân: \ e [4; 31mRed \ e [4; 32mGreen \ e [4; 33mBrown \ e [4; 34mBlue \ e [4; 35mPurple \ e [4; 36mCyan \ e [4; 37mGray \ e [4; m " 

 PS1 = "\ e [44m \ e [1; 35mBright màu tím trên nền màu xanh \ e [m"