(9 odpovědí)
Uzavřeno před 3 lety.
Často, když se začnu dívat do historie příkazů, některé znaky ze zobrazeného příkazu nejsou vymazány, například:
Co se děje:
prompt$ some_command
prompt$ some_commanother_command
Co se mělo stát:
prompt$ some_command
prompt$ another_command
Nemohu tyto znaky vymazat a bash je při provádění příkazu ignoruje. Také zmizí, když se zobrazí nová výzva (po stisknutí Enter
například).
Zeptal jsem se dalších lidí, kteří na mém pracovišti pracují na Linuxu, a řekli, že ten problém občas mají také, ale neměli ponětí, jak tento problém vyřešit.
Mám Ubuntu 11.10 a používám guake. Zde je můj PS1
:
e[0;31mu A ${PWD##*/}e[0;32m$(parse_git_branch)e[0;31m$e[m
kde parse_git_branch
je
parse_git_branch () {
git name-rev HEAD 2> /dev/null | sed 's#HEAD (.*)# (1)#'
}
Pokud vím, mí kolegové mají tento problém i s méně „vychytanými“ PS1.
Přijatá odpověď:
Použijte [...]
kolem částí PS1, které mají délku 0. Pomáhá bash získat správnou délku výzvy. I s tímto opatřením se může váš příkazový řádek zkazit při použití vícebajtových znaků (alespoň ten můj). Stisknutím kláves Ctrl+L také pomáhá v takových případech (ale zároveň vymaže obrazovku).