如何检查之前的 Zsh 提示符中是不是没有输入任何内容

Posted

技术标签:

【中文标题】如何检查之前的 Zsh 提示符中是不是没有输入任何内容【英文标题】:How do I check if nothing was typed in the previous Zsh prompt如何检查之前的 Zsh 提示符中是否没有输入任何内容 【发布时间】:2020-03-05 05:24:30 【问题描述】:

在 zsh 提示符下,我有一个自定义脚本来显示最后一个命令运行的时间。

我已经完成了这项工作,但是如何检查用户是否在上一个提示中没有输入任何内容并只是按了“Enter”或“Ctrl + C”?

在这种情况下,我不想显示用户空闲的时间,因为这对我来说不是有用的信息。

$history[$((HISTCMD-1))] 在这种情况下似乎不起作用。如果用户没有输入任何内容并直接回车,它将只显示最后运行的命令,而不是空字符串。

【问题讨论】:

在计算时间量时如何将最后一条命令排在第一位? 【参考方案1】:

如果您使用名称zshaddhistory 定义函数,则每次按下回车时都会调用它。 $1 是输入的命令,也可以是空命令。您可以设置一个全局变量来指示输入了一个空行,并在以后使用该变量。

注意此函数的返回值:如果返回0,则命令保存到历史记录中;否则不是。您可以在 zshparam 手册页中找到更多相关信息,其中描述了 _HISTORY_IGNORE_,因为此函数的主要用途是控制是否应将命令添加到历史记录中。因此,另一种方法是将空行也添加到历史记录中,并使用您的原始方法和$history 来访问它。这样做的缺点是看到空的历史条目并不是真正用户友好的。

【讨论】:

以上是关于如何检查之前的 Zsh 提示符中是不是没有输入任何内容的主要内容,如果未能解决你的问题,请参考以下文章

如何检查输入值是不是与数组中的任何值匹配

如何检查用户输入是不是未输入任何内容?

如何在创建新文件之前检查文件是不是存在

如何检查财产是不是有任何关系?

有没有办法在提交之前检查表单以查看是不是已选中任何复选框?

在将字符串转换为 int 之前检查字符串是不是不是数字 [重复]