0

我正在使用 Mac。我想设置 PS1 变量以在命令行提示符的行尾获取当前时间。像这样: 示例 1 或者这样: 示例 2

但是,不幸的是,我无法通过以下配置得到我想要的:

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\\$ "

看来我需要获取光标的当前位置并根据该位置的坐标进行一些计算,但我不知道如何获取它。有人可以帮忙吗?

4

2 回答 2

1

有几个问题。这块

$(tput cuf $(($(tput cols)-33)))

似乎是你要问的。如果您想将日期定位在行尾,您可以尝试使用hpa(水平位置绝对)功能,例如,

$(tput hpa $(($(tput cols)-5)))

这样,您可以将光标移动到行上的给定绝对位置,而不是对于当前位置移动。

给定的提示占用两行。如果您在写入日期的部分之前和之后使用scrc功能(保存/恢复光标),则可以将其减少为一行。这可能会遇到行编辑清除日期的问题,但这是需要考虑的问题。

于 2015-05-09T15:37:39.123 回答
0

感谢@Thomas 的好答案,它可以真正解决我作为解决方案提出的问题。但它并不完美,这意味着它仍然无法获得我想要的命令提示符。

我发现bash 中我想要的提示应该没有解决方案。但是,正如@chepner 所说,确实存在在zsh中获取提示的方法。

如何在 zsh 中获得提示

zsh 是一个非常强大的 shell,它内置在 mac 中,但对于新手来说有点复杂。所以有一个很好的工具来解决它,名为“ oh-my-zsh ”,它使 zsh 的使用变得更加容易。

oh-my-zsh ” 包含许多 zsh 主题。而且,幸运的是,我想要的提示与其中一个非常相似(请参阅此处的主题),名为闪烁。所以我只需要修改一些位于其中的主题文件,~/.oh-my-zsh/themes/blinks.zsh-theme需要做的更改是:

将文件的最后一行从:

RPROMPT='%{%B%F{cyan}%}%!%{%f%k%b%}

RPROMPT='%{%B%F{cyan}%}%@%{%f%k%b%}

于 2015-05-16T16:55:36.827 回答