繁体   English   中英

如何监视bash / zsh提示输入?

[英]How to monitor bash/zsh prompt input?

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

例如,如果用户输入了

[3:30pm@home]> ssh user@23.23.23.23 ls -alh

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

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

这可能吗?

对于背景,总体目标是获取用户的部分输入并将shell转换为英语。 例如,如果我键入ls -al ,我的$ PS1或$ PS2将更改为“以长格式列出当前目录中的所有文件”。 因此,如果某人不完全记得-s或-x是否通过ssh启用了X11转发,则可以键入它,并查看纯英语翻译是否符合他们的期望。

我希望它是一个zsh插件,或者是一个人们扔进rc文件的脚本,所以没有什么太大的事情要做。

您是否需要实时输入? 还是至少在接受该行之前?

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

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 ,则可以在末尾使用以下命令覆盖默认小部件:

zle -N accept-line my_superOverride

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM