[英]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.