簡體   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