(9 jawaban)
Tutup 3 tahun yang lalu.
Seringkali ketika saya mulai melihat riwayat perintah, beberapa karakter dari perintah yang ditampilkan tidak terhapus, misalnya:
Apa yang terjadi:
prompt$ some_command
prompt$ some_commanother_command
Apa yang seharusnya terjadi:
prompt$ some_command
prompt$ another_command
Saya tidak dapat menghapus karakter tersebut dan bash mengabaikannya saat menjalankan perintah. Mereka juga menghilang ketika prompt baru sedang ditampilkan (setelah menekan Enter
misalnya).
Saya bertanya kepada orang lain yang bekerja di Linux di tempat kerja saya dan mereka mengatakan bahwa mereka kadang-kadang memiliki masalah itu juga, tetapi mereka tidak tahu bagaimana menyelesaikan masalah itu.
Saya memiliki Ubuntu 11.10 dan saya menggunakan guake. Ini PS1
saya :
e[0;31mu A ${PWD##*/}e[0;32m$(parse_git_branch)e[0;31m$e[m
di mana parse_git_branch
adalah
parse_git_branch () {
git name-rev HEAD 2> /dev/null | sed 's#HEAD (.*)# (1)#'
}
Sejauh yang saya tahu, rekan kerja saya memiliki masalah itu bahkan dengan PS1 yang kurang "mewah".
Jawaban yang Diterima:
Gunakan [...]
di sekitar bagian PS1 yang memiliki panjang 0. Ini membantu bash untuk mendapatkan panjang prompt yang tepat. Bahkan dengan ukuran ini, baris perintah Anda bisa rusak saat menggunakan karakter multibyte (setidaknya milik saya). Menekan Ctrl+L juga membantu dalam kasus seperti itu (tetapi membersihkan layar pada saat yang sama).