由于我在没有插入笔记本电脑的情况下工作太长时间时遇到了问题,我正在尝试编写一个新的 PS1,它使用 upower 显示我当前的电池状态。我快到了,除了颜色和包装的小(烦人)错误(或更准确地说,缺少,即字符打印在同一行的开头时,当窗口结束时,一切正常/没有新行)。起初,我以为我犯了一个错误(就像迄今为止我在该主题上看到的所有以前的帖子一样)并且忘记转义不可打印的字符(使用\[ \]),但我看不到哪里......如果没有,在 PS1 中叠加别名和功能是否存在任何已知问题(或者有人对做我想做的事情有更好的主意吗?)?
这是我的 PS1(“如果有颜色的术语”部分):
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\](`battPer`)-\A:\[\033[01;34m\]\w\[\033[00m\]\$ '
Run Code Online (Sandbox Code Playgroud)
我的 .bash_aliases 中的 batPer 函数(和别名)(评论如下):
batPer()
{
percent=`upower -i /org/freedesktop/UPower/devices/battery_BAT1 | grep -E percentage | cut -d : -f 2 | cut -d " " -f 11 | cut -d % -f 1`
plugged=`upower -i /org/freedesktop/UPower/devices/line_power_ACAD | grep -E "online: " | cut -d y -f 2`
if [ "$plugged" = 'es' ] ; then
echo -e "\[\e[0;92m\]$percent%\[\e[0m\]"
else
if [ "$percent" -le 10 ] ; then …Run Code Online (Sandbox Code Playgroud) 我希望我的提示显示:
当前(绝对)工作目录,以绿色和
在新行中,美元符号和一个空白区域。
我正在使用这条线 .profile
export PS1='\e[0;32m$(pwd)\n\e[m$ '
所以当在 eg 时Desktop,我的提示看起来像这样:
然而,有时当点击向上箭头重新运行以前的命令时,在提示开始时会出现一个随机字符序列,除非我按下回车键,否则它似乎不会消失,例如
我从来没有打过cd cd Desktop命令。最奇怪的部分是退格键甚至不会删除cd上面两个命令中的第一个!
有什么建议?