首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何监控bash/zsh提示输入?

如何监控bash/zsh提示输入?
EN

Stack Overflow用户
提问于 2015-11-25 01:13:19
回答 1查看 760关注 0票数 1

我需要在后台脚本中查看用户的提示输入。(在zsh和bash中)。

例如,如果用户键入

代码语言:javascript
运行
复制
[3:30pm@home]> ssh user@23.23.23.23 ls -alh

我的后台进程在按enter键之前需要字符串"ssh user@23.23.23.23ls -alh“。

$PS1有提示字符串,但没有用户输入。

这个是可能的吗?

对于后台,总体目标是接受用户的部分输入,并将shell翻译成英语。例如,如果我输入ls -al,我的$PS1或$PS2将更改为“列出当前目录中所有长格式的文件”。因此,如果有人不太记得-X或-x是否启用了ssh的X11转发,他们可以输入它,看看简单的英语翻译是否符合他们的期望。

我希望它是一个zsh插件,或者是人们扔到rc文件中的脚本,这样就不会有太大的麻烦了。

EN

回答 1

Stack Overflow用户

发布于 2016-03-05 07:35:52

你需要实时输入吗?或者至少在这行被接受之前?

对于最后一个选项,在zsh中有一个小部件accept-line,在接受输入行时会触发该小部件。您可以使用自己的小部件覆盖默认小部件,如下所示:

代码语言:javascript
运行
复制
function accept-line
{
    #here, send the input to your script
    yourscript "$BUFFER"

    # ... do something here if you want

    # trigger the real widget to accept the line and run the input
    zle .accept-line
}
# register your new accept-line widget to replace the builtin one
zle -N accept-line

在这里,我使用了名称accept-line,但是如果您想将覆盖函数命名为my_superOverride,则可以使用以下命令覆盖末尾的默认小部件:

代码语言:javascript
运行
复制
zle -N accept-line my_superOverride
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33899834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档