Câu trả lời:
Đóng gói màu của bạn trong ngoặc []
để chúng được tính là các ký tự không in được .
export PS1="\[\033[0;35m\]\u\[\033[00m\] on \[\033[0;36m\]\h\[\033[00m\] in \[\033[0;33m\]\w\[\033[00m\] \$ "
Thật không may, điều này dẫn đến các vấn đề gói dòng nổi tiếng bị vấy bẩn bởi bash.
Có tin vui tất cả mọi người, ánh sáng cuối đường hầm là thế tput
.
echo $(tput setaf 6) This is cyan
Đặt tất cả các biến của bạn trước, sau đó sử dụng nó trong tập lệnh.
mg=$(tput setaf 5);cy=$(tput setaf 6);yl=$(tput setaf 3);rs=$(tput sgr0); echo $mg $USER $cy $HOSTNAME $yl $PWD $rs
Bạn có thể tìm thấy một tập lệnh mẫu trong dotfiles
repo github của tôi