我正在使用Mac。我想设置PS1变量以在命令行提示符下的行尾获取当前时间。像这样: 或这个:
但是,遗憾的是,通过以下配置我无法得到我想要的东西:
CYAN="\[$(tput setaf 6)\]"
GREEN="\[$(tput setaf 2)\]"
BLUE="\[$(tput setaf 4)\]"
YELLOW="\[$(tput setaf 3)\]"
export PS1="$GREEN\u$BLUE@$CYAN\h $YELLOW\w\[$(tput cuf $(($(tput cols)-33)))\]$CYAN\[$(date +%H:%M)\]\n\\$ "
似乎我需要获取光标的当前位置并根据位置的坐标进行一些计算,但我不知道如何获得它。有人可以帮忙吗?
答案 0 :(得分:1)
有一些问题。这个块
$(tput cuf $(($(tput cols)-33)))
似乎是你在问什么。如果要将日期定位在行尾,可以尝试使用hpa
(水平位置绝对)功能,例如,
$(tput hpa $(($(tput cols)-5)))
这样,您可以将光标移动到线上给定的绝对位置,而不是将 relative 移动到当前位置。
给定的提示占用两行。如果在编写日期的部分之前和之后使用sc
和rc
功能(保存/恢复光标),则可以将其减少到一行。这可能会遇到行清除日期的问题,但需要考虑这个问题。
答案 1 :(得分:0)
感谢@Thomas的好答案,它可以真正解决我作为解决方案提出的问题。但它并不完美,这意味着它仍然无法获得我想要的命令提示符。
我发现在bash 中应该有无法解决我想要的提示。但是,正如@chepner所说,确实有一些方法可以在 zsh 中获得提示。
如何在zsh中获取提示:
zsh是一个非常强大的shell,它内置于mac中,但它对于新手来说有点复杂。因此,有一个很好的工具可以解决它名为“oh-my-zsh”,这使得zsh的使用变得更加容易。
“oh-my-zsh”包含zsh的许多主题。而且,幸运的是,我想要的提示与其中一个(see the themes here)非常相似,后者命名为blink。所以我只需要修改~/.oh-my-zsh/themes/blinks.zsh-theme
中的一些主题文件,并且需要做的更改是:
更改文件的最后一行:
RPROMPT='%{%B%F{cyan}%}%!%{%f%k%b%}
到
RPROMPT='%{%B%F{cyan}%}%@%{%f%k%b%}