GNU/Linux >> Znalost Linux >  >> Linux

Proč je Bash Prompt odposloucháván, když procházím historii?

Tato otázka zde již obsahuje odpovědi :Výzva terminálu se nezalamuje správně

(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).


Linux
  1. Proč skript Bash nerozpozná aliasy?

  2. Proč nefunguje ~/.bash_profile?

  3. Bash přepíše první řádek, výzva k bashu Ps1?

  1. Rozumíte vykřičníku (!) v Bash?

  2. Proč se skript Bash po spuštění neukončí?

  3. Vyloučení některých příkazů z ukládání do historie Bash?

  1. Bash tipy pro každý den na příkazovém řádku

  2. Je možné, aby dokončování Bash procházelo alternativami?

  3. proč se mi při psaní linuxové služby zobrazuje chyba formátu Exec?