Có gì đó không ổn với dấu nhắc bash của tôi?


1

Vì vậy, khi tôi gõ bằng dấu nhắc bash mới, nó sẽ tiếp tục trong một thời gian, nhưng nếu lệnh được kéo dài, nó sẽ tự lặp lại và viết qua dấu nhắc bash. Đây là PS1 của tôi:

PS1='\e[0;34m\A\e[m | \e[0;31m-\e[m \e[0;32m>>\e[m  '

Để tham khảo, đây là các dòng từ .bashrc tiêu chuẩn có liên quan đến PS1:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

Để tham khảo, đây là các dòng từ một tiêu chuẩn .bashrccó liên quan đến PS1: paste.ubfox.com/7576468 . Tôi đoán là bạn không có bất kỳ dấu ngoặc đóng nào trong của bạn PS1.
saiarcot895

vẫn không có gì. Tôi đã thử thêm dấu ngoặc nhưng tất cả những gì đã làm là thêm dấu ngoặc ngẫu nhiên vào văn bản tôi có thể thấy
mrnatbus12

Câu trả lời:


0

Bạn cần kèm theo các chuỗi thoát trong \[ \]:

PS1='\[\e[0;34m\]\A\[\e[m\] | \[\e[0;31m\]-\[\e[m\] \[\e[0;32m\]>>\[\e[m\]  '

Điều này về cơ bản giống như câu trả lời của @ user107425 nhưng sử dụng cú pháp \ethay vì \033cú pháp và với việc đóng \[\e[m\]lại sẽ đặt màu về mặc định sau khi kết thúc lời nhắc.

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.