Tìm vị trí của bạn PS1
được đặt trong của bạn .bashrc
và chèn '\[\e[1m\]'
vào đầu và \[\e[0m\]
cuối.
\[
và \]
là cần thiết để shell biết được mớ hỗn độn bên trong chiếm 0 không gian trên màn hình, điều này ngăn chặn một số hành vi sai lầm khi thực hiện chỉnh sửa dòng. Bạn không cần phải lo lắng quá nhiều về nó.
\e[
được gọi là CSI (giới thiệu trình tự điều khiển). Bạn sẽ thấy nó được sử dụng trong hầu hết các mã được liệt kê trên trang Wikipedia được tham chiếu. \e
nghĩa là nhân vật thoát hiểm.
- Nếu bạn nhìn vào bảng SGR trên trang Wikipedia, bạn sẽ thấy 1 là số cho văn bản sáng / đậm và 0 là để đặt lại. Do đó,
CSI 1m
bật đậm và CSI 0m
đặt lại phông chữ để phần còn lại của văn bản của bạn bình thường.
Wikipedia có một danh sách đầy đủ các mã thoát ANSI mà bạn có thể sử dụng nếu trình giả lập thiết bị đầu cuối của bạn hỗ trợ nó.
Chỉnh sửa
Đối với tính di động và dễ đọc, bạn nên sử dụng tput
thay vì mã thoát mã hóa cứng. Nhược điểm duy nhất là tput
cách tiếp cận sẽ không hoạt động với các thiết bị đầu cuối hỗ trợ mã ANSI nhưng bị hỏng hoặc thiếu cơ sở dữ liệu terminfo, nhưng trong trường hợp đó, terminfo bị hỏng là một vấn đề lớn hơn vì nhiều ứng dụng bảng điều khiển của bạn dựa trên terminfo có thể không hoạt động chính xác.
Đây là một ví dụ về những gì tôi làm trong .bashrc
:
# color names for readibility
reset=$(tput sgr0)
bold=$(tput bold)
black=$(tput setaf 0)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
magenta=$(tput setaf 5)
cyan=$(tput setaf 6)
white=$(tput setaf 7)
user_color=$green
[ "$UID" -eq 0 ] && { user_color=$red; }
PS1="\[$reset\][\[$cyan\]\A\[$reset\]]\[$user_color\]\u@\h(\l)\
\[$white\]:\[$blue\]\W\[$reset\][\[$yellow\]\$?\[$reset\]]\[$white\]\
\\$\[$reset\] "
Đây là một phiên bản chung của tôi sẽ trông như thế nào. Đây 0
là trạng thái thoát của lệnh cuối cùng.