gpt4 book ai didi

linux - 如何间歇性地在 shell 提示符中显示我的历史命令编号?

转载 作者:IT王子 更新时间:2023-10-29 01:25:01 28 4
gpt4 key购买 nike

如何在我的 shell 提示符中间歇性地显示我的历史命令编号?例如,与其在每个提示中都显示它,不如每 7 次显示一次。 (我正在使用 zsh,但我认为 bash 应该几乎相同。)我遇到的问题是 %h 直到它在 PROMPT 变量中才被评估,并且 $HISTCMD 由于某种原因总是被评估为 0。因此,将这样的函数放入我的提示中会失败,因为 $HISTCMD 始终为 0:

prompt_history() {
CYCLE=$(( $HISTCMD % 7 ))
if [[ "$CYCLE" = "0" ]]; then
echo -ne "$HISTCMD"
fi
}

PROMPT="$(prompt_history) blah-blah >:"

这可以通过回显“%h”而不是“$HISTCMD”来部分修复,但只是部分修复。

由于 history 命令在 .zshrc 文件中不(似乎)起作用这一事实使情况变得更加复杂,因此这样的事情将不起作用:

CYCLE="$(( $(history 1 | wc -l) % 7 ))"

(如果您使用的是 bash,请将“history 1”更改为“history”。)

此外,历史文件不能用作此信息的来源,因为(至少我配置事物的方式——我宁愿不更改此配置)在 zsh session 关闭之前,历史不会在 session 之间共享它的历史被添加到我的 $HISTFILE 中。因此,这是行不通的:

CYCLE="$(( $(cat $HISTFILE | wc -l) % 7 ))"

我几乎相信这目前是不可能的。我希望有人能证明我是错的。

最佳答案

您只需要延迟对提示的评估,直到它发出。只需将双引号更改为单引号:

PROMPT='$(prompt_history) blah-blah >:'

关于linux - 如何间歇性地在 shell 提示符中显示我的历史命令编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4557534/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com