Cách tùy chỉnh (và tô màu) Dấu nhắc Bash của bạn
Hầu hết các bản phân phối Linux cấu hình dấu nhắc Bash để trông giống như tên người dùng @ tên máy chủ: thư mục $
. Nhưng bạn có thể định cấu hình lời nhắc Bash để chứa bất cứ thứ gì bạn thích và thậm chí chọn bất kỳ màu nào bạn thích.
Các bước ví dụ ở đây đã được thực hiện trên Ubuntu 16.04 LTS. Quá trình này phải giống nhau trên các bản phân phối Linux khác, mặc dù lời nhắc và cài đặt mặc định của Bash trong tệp .bashrc có thể khác một chút.
Trường hợp biến Prompt được lưu trữ
Cấu hình nhắc nhở Bash của bạn được lưu trữ trong tệp .bashrc của tài khoản người dùng của bạn, tại ~ / .bashrc
. Vì vậy, nếu tên người dùng của bạn là bob, tệp sẽ ở /home/bob/.bashrc
.
Bạn có thể mở tệp để xem biến Bash hiện tại. Chúng tôi sẽ sử dụng nano làm trình soạn thảo văn bản mẫu của chúng tôi, mặc dù bạn cũng có thể sử dụng vi, emacs hoặc bất kỳ trình soạn thảo văn bản nào khác mà bạn thấy thoải mái. Mở Terminal và chạy:
nano ~ / .bashrc
Cuộn xuống PS1 =
phần. Biến đầu tiên trông khá phức tạp vì nó bao gồm thông tin màu - chúng tôi sẽ giải thích điều đó sau. Biến thứ hai, không có thông tin màu, đọc như sau:
$ debian_chroot: + ($ debian_chroot) \ u @ \ h: \ w \ $
Điều này vẫn còn một chút phức tạp do $ debian_chroot: + ($ debian_chroot)
bit. Những điều này chỉ nói với Bash để cho bạn biết nếu bạn đang sử dụng môi trường chroot Debian và thường sẽ không được hiển thị. Bỏ qua những cái đó, đây là cấu trúc mặc định của biến nhắc Bash:
\ u @ \ h: \ w \ $
bạn
cho biết tên người dùng của bạn, @
cho biết dấu @, \ h
cho biết tên máy chủ (tên máy tính), :
chỉ ra: ký tự, \ w
cho biết thư mục làm việc và \ $
chỉ ra $ nếu bạn là tài khoản người dùng bình thường hoặc # nếu bạn đã root. Vì vậy, đặt tất cả lại với nhau, bạn có được tên người dùng @ tên máy chủ: work_directory $
.
Để thay đổi lời nhắc Bash của bạn, bạn chỉ cần thêm, xóa hoặc sắp xếp lại các ký tự đặc biệt trong biến PS1. Nhưng có nhiều biến bạn có thể sử dụng hơn các biến mặc định.
Để lại trình chỉnh sửa văn bản cho nano hiện tại, nhấn Ctrl + X để thoát. Chúng tôi sẽ chỉ cho bạn cách thử nghiệm các biến trước khi thực sự viết một biến mới vào tệp .bashrc của bạn.
Cách tạo một dấu nhắc Bash tùy chỉnh
Cấu hình nhắc Bash của bạn được lưu trong biến PS1. Để lưu nội dung của biến PS1 vào một biến mới, hãy chạy lệnh sau:
DEFAULT = $ PS1
Bây giờ bạn có thể đặt biến PS1 thành các giá trị khác nhau để thử nghiệm. Ví dụ: dòng đầu tiên ở đây sẽ đặt lời nhắc của bạn thành lời nhắc $ cơ bản của người dùng, trong khi dòng thứ hai sẽ đặt lời nhắc của bạn cho người dùng cơ bản của người dùng: dấu nhắc làm việc.
PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"
Nếu bạn muốn quay lại dấu nhắc mặc định của mình, chỉ cần chạy lệnh sau.
PS1 = $ DEFAULT
Bash sẽ được khôi phục về dấu nhắc mặc định của nó nhờ vào việc bạn đã lưu các cài đặt mặc định đó trước đó. Lưu ý rằng mọi thay đổi bạn thực hiện ở đây chỉ là tạm thời cho phiên Bash hiện tại, vì vậy bạn luôn có thể đăng xuất và đăng nhập lại hoặc đóng và mở lại cửa sổ đầu cuối để quay lại dấu nhắc mặc định. Nhưng dòng trên cho phép dễ dàng quay lại dấu nhắc Bash mặc định của bạn mà không gặp rắc rối khi đăng xuất hoặc đóng cửa sổ.
Bạn có thể thêm bất kỳ ký tự hoặc văn bản vào biến. Vì vậy, để thêm tiền tố vào dấu nhắc mặc định với Lời chào thế giới, bạn có thể sử dụng:
PS1 = "Xin chào thế giới \ u @ \ h: \ w \ $"
Bây giờ bạn đã có những điều cơ bản, bạn chỉ cần biết tất cả các nhân vật đặc biệt là gì. Bạn có thể sẽ không quan tâm đến nhiều trong số này, nhưng đây là danh sách đầy đủ như trong hướng dẫn Bash:
- Một nhân vật chuông:
\ a
- Ngày, theo định dạng của Ngày Tuần trong tháng Định dạng ngày (ví dụ: Tuệ ngày 26 tháng 5):
\ d
- Định dạng được truyền cho strftime (3) và kết quả được chèn vào chuỗi dấu nhắc; một định dạng trống dẫn đến biểu diễn thời gian cụ thể của miền địa phương. Niềng răng được yêu cầu:
\ D định dạng
- Một nhân vật thoát:
\ e
- Tên máy chủ, cho đến đầu tiên '.':
\ h
- Tên máy chủ:
\ H
- Số lượng công việc hiện đang được quản lý bởi shell:
\ j
- Tên cơ sở của tên thiết bị đầu cuối của shell:
\ l
- Một dòng mới:
\ n
- Một chuyến xe trở về:
\ r
- Tên của shell, tên cơ sở của $ 0 (phần sau dấu gạch chéo cuối cùng):
\S
- Thời gian, ở định dạng HH: MM: SS 24 giờ:
\ t
- Thời gian, ở định dạng HH: MM: SS 12 giờ:
\ T
- Thời gian, ở định dạng 12 giờ sáng / chiều:
\ @
- Thời gian, ở định dạng HH: MM 24 giờ:
\ A
- Tên người dùng của người dùng hiện tại:
bạn
- Phiên bản của Bash (ví dụ: 2,00):
\ v
- Bản phát hành Bash, phiên bản + patchlevel (ví dụ: 2.00.0):
\ V
- Thư mục làm việc hiện tại, với $ HOME được viết tắt bằng dấu ngã (sử dụng biến $ PROMPT_DIRTRIM):
\ w
- Tên cơ sở của $ PWD, với $ HOME được viết tắt bằng dấu ngã:
\
- Số lịch sử của lệnh này:
\!
- Số lệnh của lệnh này:
\ #
- Nếu uid hiệu quả là 0, #, nếu không $:
\ $
- Ký tự có mã ASCII là giá trị bát phân nnn:
\ nnn
- Dấu gạch chéo ngược:
\
- Bắt đầu một chuỗi các ký tự không in. Điều này có thể được sử dụng để nhúng một 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:
\]
Vì vậy, nếu bạn muốn thêm ngày và thời gian vào dấu nhắc Bash của mình và đặt thư mục làm việc vào lệnh trên dòng thứ hai, bạn có thể sử dụng cấu trúc sau:
PS1 = "[\ d \ t] \ u @ \ h \ n \ w \ $"
Dấu ngoặc vuông ở đây hoàn toàn không cần thiết, nhưng giúp phá vỡ mọi thứ một cách trực quan và làm cho dòng dễ đọc hơn. Như chúng tôi đã đề cập trước đó, bạn có thể thêm bất kỳ văn bản hoặc ký tự bình thường nào vào biến bạn thích, vì vậy hãy thoải mái sử dụng bất cứ thứ gì phù hợp với bạn.
Có một mẹo mạnh mẽ hơn mà bạn nên biết: Bạn có thể thêm đầu ra của bất kỳ lệnh nào vào dấu nhắc. Bất cứ khi nào lời nhắc xuất hiện, Bash sẽ chạy lệnh và điền thông tin hiện tại. Để làm điều này, chỉ cần bao gồm bất kỳ lệnh nào bạn muốn chạy giữa hai '
nhân vật. Đó không phải là dấu nháy đơn - đó là dấu trọng âm, xuất hiện phía trên phím Tab trên bàn phím của bạn.
Ví dụ: giả sử bạn muốn xem phiên bản nhân Linux trong lời nhắc. Bạn có thể sử dụng một dòng như sau:
PS1 = "\ u @ \ h trên 'uname -s -r' \ w \ $"
Một ví dụ khác, giả sử bạn muốn xem thời gian hoạt động và tải trung bình của hệ thống, như được hiển thị bởi thời gian hoạt động
chỉ huy. Bạn có thể sử dụng cấu trúc sau, đặt thời gian hoạt động trên dòng của chính nó trước phần còn lại của dấu nhắc.
PS1 = "('thời gian hoạt động') \ n \ u @ \ h: \ w $"
Hãy thử nghiệm với các ký tự và lệnh đặc biệt khác nhau để lắp ráp dấu nhắc lệnh lý tưởng của bạn.
Cách thêm màu sắc vào dấu nhắc Bash của bạn
Khi bạn đã tìm ra lời nhắc ưa thích của mình, bạn có thể thêm màu vào đó. Điều này thực sự rất đơn giản, nhưng nó làm cho biến số trông cực kỳ lộn xộn và phức tạp nếu bạn không hiểu bạn đang nhìn gì.
Ví dụ: biến dấu nhắc màu mặc định từ trước đó là:
$ debian_chroot: + ($ debian_chroot) \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $
Hoặc, loại bỏ các bit debian_chroot một lần nữa:
\ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $
Đây thực sự chỉ là \ u @ \ h: \ w $
thay đổi từ trước đó, nhưng với thông tin màu sắc. Thực sự, chúng ta có thể chia nó thành một vài phần:
\ [\ 033 [01; 32m \]\ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \]\ w \ [\ 033 [00m \]\ $
Phần đầu tiên là \ u @ \ h
bit, trước thông tin màu sắc chuyển sang màu xanh lá cây. Thứ hai là :
ký tự, trước thông tin màu sắc loại bỏ bất kỳ màu. Thứ ba là \ w
bit, trước thông tin màu sắc chuyển sang màu xanh. Thứ tư là \ $
bit, trước thông tin màu sắc loại bỏ bất kỳ màu.
Khi bạn hiểu cách tạo các thẻ màu của riêng mình, bạn có thể thêm bất kỳ màu nào bạn thích vào bất kỳ phần nào trong dấu nhắc Bash mà bạn thích.
Đây là những gì bạn cần biết: Bạn phải bao gồm toàn bộ thông tin mã màu giữa \ [
và \] tính cách
S. Trong thẻ, bạn phải bắt đầu bằng một trong hai \ 033 [
hoặc là \ e [
để chỉ cho Bash rằng đây là thông tin màu. Cả hai \ 033 [
và \ e [
Làm điều tương tự. \ e [
ngắn hơn nên có thể thuận tiện hơn để sử dụng, nhưng chúng tôi sẽ sử dụng \ 033 [
ở đây vì nó phù hợp với những gì được sử dụng theo mặc định. Ở cuối thẻ, bạn phải kết thúc bằng m \
để chỉ sự kết thúc của thẻ màu.
Phá vỡ nó, đây là những thẻ màu sẽ trông như thế nào. Sự khác biệt duy nhất là thông tin bạn thêm thay cho MÀU để xác định màu thực tế:
\ [\ 033 [MÀUm \]
Bash cho phép bạn thay đổi màu của văn bản nền trước, thêm các thuộc tính như kiểu chữ đậm đậm hoặc chữ gạch chân chữ nhật vào văn bản và đặt màu nền.
Dưới đây là các giá trị cho văn bản nền trước:
- Đen: 30
- Màu xanh: 34
- Cyan: 36
- Màu xanh lá cây: 32
- Màu tím: 35
- Đỏ: 31
- Trắng: 37
- Vàng: 33
Ví dụ: vì văn bản màu tím là mã màu 32, bạn sẽ sử dụng \ [\ 033 [32m \]
cho văn bản màu tím.
Bạn cũng có thể chỉ định một thuộc tính cho văn bản. Thuộc tính này phải được thêm vào trước số màu, được phân tách bằng dấu chấm phẩy (;). Văn bản với các thuộc tính này sẽ trông khác nhau trong các trình giả lập thiết bị đầu cuối khác nhau.
Dưới đây là các giá trị cho các thuộc tính văn bản:
- Văn bản bình thường: 0
- Chữ đậm hoặc sáng: 1 (Nó phụ thuộc vào trình giả lập thiết bị đầu cuối.)
- Văn bản Dim: 2
- Văn bản được gạch chân: 4
- Văn bản nhấp nháy: 5 (Điều này không hoạt động trong hầu hết các trình giả lập thiết bị đầu cuối.)
- Văn bản đảo ngược: 7 (Điều này đảo ngược màu nền trước và màu nền, vì vậy bạn sẽ thấy văn bản màu đen trên nền trắng nếu văn bản hiện tại là văn bản màu trắng trên nền đen.)
- Văn bản ẩn: 8
Bạn thực sự không cần phải bao gồm thuộc tính văn bản bình thường. Dù sao đó cũng là mặc định.
Ví dụ: vì văn bản màu đỏ là mã 31 và văn bản in đậm là mã 1, bạn sẽ sử dụng \ [\ 033 [1; 31m \]
cho văn bản màu đỏ đậm.
Bạn cũng có thể chỉ định màu nền, nhưng bạn không thể thêm thuộc tính vào màu nền.
Dưới đây là các giá trị cho màu nền:
- Nền đen: 40
- Nền màu xanh: 44
- Nền Cyan: 46
- Nền xanh: 42
- Nền màu tím: 45
- Nền đỏ: 41
- Nền trắng: 47
- Nền vàng: 43
Ví dụ: vì nền màu xanh là mã 44, \ [\ 033 [44m \]
sẽ chỉ định một nền màu xanh.
Bạn có thể chỉ định cả thẻ màu nền trước và nền. Ví dụ: 42 đại diện cho nền màu xanh lá cây và 31 đại diện cho văn bản màu đỏ. Vì vậy, để làm cho lời nhắc mặc định trở thành văn bản màu đỏ trên nền màu xanh lá cây, bạn sẽ sử dụng:
PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "
Chúng tôi chỉ xác định một màu nền đơn và sau đó là một màu văn bản nền trước duy nhất ở đây, bắt đầu ở đầu dấu nhắc và được áp dụng cho tất cả văn bản trong lời nhắc. Tuy nhiên, bạn có thể chỉ định bao nhiêu thẻ màu như bạn muốn trong biến để tô màu các phần khác nhau của lời nhắc của bạn theo cách bạn muốn.
Màu văn bản nền và tiền cảnh tiếp tục đi qua dấu nhắc trừ khi bạn chỉ định mã màu 00 xóa thông tin màu. Bạn cũng có thể sử dụng thẻ này trong biến để đặt lại định dạng về mặc định ở đâu đó trong lời nhắc của bạn. Ví dụ, dòng sau sẽ kết thúc tất cả các màu trước \ $
tính cách.
PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "
Cách đặt lời nhắc mặc định mới của bạn
Khi bạn đã hoàn thành thử nghiệm với màu sắc, bạn sẽ có một dấu nhắc Bash mà bạn thích trong phiên hiện tại. Nhưng bạn có thể muốn biến lời nhắc mới đó thành vĩnh viễn để nó tự động được sử dụng trong tất cả các phiên Bash của bạn.
Để làm điều này, bạn chỉ cần thay đổi nội dung của biến PS1 trong tệp .bashrc, mà chúng ta đã xem xét trước đó.
Mở tệp .bashrc trong trình soạn thảo văn bản ưa thích của bạn, như vậy:
nano ~ / .bashrc
Cuộn xuống và định vị phần PS1 =. Chỉ cần thay thế biến mặc định bằng biến tùy chỉnh của bạn. Bạn có thể muốn rời khỏi $ debian_chroot: + ($ debian_chroot)
Tuy nhiên, một mình - chúng sẽ không xuất hiện trừ khi bạn ở trong môi trường chroot.
Nhập biến PS1 màu của bạn dưới if ["$ color_prompt" = có]; sau đó
hàng. Nhập biến không có màu bên dưới khác
hàng.
Lưu tệp và đóng trình soạn thảo văn bản của bạn. Ví dụ: để lưu tệp dưới dạng nano, nhấn Ctrl + O, nhấn Enter, sau đó nhấn Ctrl + X để thoát.
Lần tới khi bạn khởi động shell Bash mới - ví dụ: bằng cách đăng nhập tại thiết bị đầu cuối hoặc bằng cách mở cửa sổ thiết bị đầu cuối mới - bạn sẽ thấy lời nhắc tùy chỉnh của mình.