【问题标题】:Linux bash line override itself [duplicate]Linux bash行覆盖自身[重复]
【发布时间】:2016-01-14 13:27:56
【问题描述】:

我制作了自己的 .bashrc(下面的部分代码)并通过按下的向上/向下箭头进行测试:我发现 命令历史记录会覆盖行的静态文本或保留最后一个命令并在其上打印新命令。如何解决?

function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

RESTORE=$(echo -en '\033[0m')
RKNAME=$(echo -en '\033[38;5;106m')
RKPATH=$(echo -en '\033[38;5;229m')
RKBRANCH=$(echo -en '\033[38;5;44m')
RKGIT=$(echo -en '\033[38;5;250m')

pathToFolder=$PWD;

if [[ $pathToFolder =~ .*_GitRepo.* ]]
then
    PS1='${RKNAME}\u@\h${RESTORE} ${RKGIT}Git ${RKPATH}\W\ ${RKBRANCH}$(parse_git_branch) \n ${RKGIT}-- $ ${RESTORE} '
    fi

【问题讨论】:

  • 如果您不知道自己在做什么,请不要使用转义符。
  • @123 是的,我为自己清楚现在有很多逃跑的问题。谢谢。

标签: linux bash


【解决方案1】:

解决我的问题是:

但是,我遇到了与您相同的换行问题。解决方法是在 ANSI 转义符周围插入 [ 和 ],以便 shell 知道不将它们包含在换行计算中。

感谢@Gillies 提供链接Why is this bash prompt acting strangely/disappearing, and how do I fix it (OS X)?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 2015-08-10
    相关资源
    最近更新 更多