Bash<;阅读>;印刷新线,如何防止
所以,我有一种情况,我想把输出打印到用户刚刚发布的输出上,我写了这个简短的东西来确保它是可能的Bash<;阅读>;印刷新线,如何防止,bash,Bash,所以,我有一种情况,我想把输出打印到用户刚刚发布的输出上,我写了这个简短的东西来确保它是可能的 echo -e "Cmd> \c" && read cmd && echo "-append_something" 尽管看起来read在“回车”键上打印了一行新行。有没有办法取消这个?或任何其他方式,我可以将此输出打印到同一行 实时查看输入是必要的 预期输出:Cmd>-append\u something使用-s选项读取: echo -e "Cmd> \c
echo -e "Cmd> \c" && read cmd && echo "-append_something"
尽管看起来read在“回车”键上打印了一行新行。有没有办法取消这个?或任何其他方式,我可以将此输出打印到同一行
实时查看输入是必要的
预期输出:
Cmd>-append\u something
使用-s
选项读取
:
echo -e "Cmd> \c" && read -s cmd && echo "-append_something"
更新:
使用经典的ANSI屏幕光标操作应做到以下几点:
echo -e "Cmd> \c"$'\e[s' && read cmd && echo $'\e[u'"${cmd}-append_something"
更简单:
echo -ne "Cmd> \e[s" && read cmd && echo $'\e[u'"${cmd}-append_something"
另一个较短的:
read -p "Cmd> "$'\e[s' cmd && echo $'\e[u'"${cmd}-append_something"
更为手工的东西:
read -p "Cmd> " cmd && echo $'\e[A\e[5C'"${cmd}-append_something"
嗯。
readcmd | tr-d'\n'
不会这样做。有趣的问题。read
显示您键入的内容。当您点击Enter
时,它会打印它。read-s cmd&&echo-n$cmd
可以接受吗?不过,没有即时反馈。打印新行的不是read
,而是用户点击回车键终止输入,底层终端驱动程序会回显输入。您可以将其关闭(stty-echo
或read-s
),但键入的其他内容也不会显示。。。也许stty-echonl
可能有用,但我还没有尝试过…@Boldewyn请参见编辑,这是必要的。您需要回显$cmd
。请参阅我上面的评论。echo-e“Cmd>\c”$'\e[s'&&read Cmd&&echo$'\e[u\e[A'${Cmd}-append\u something”
Cmd>sdasfa-append\u somethingecho-e“Cmd>\c”$'\e[s'&&read Cmd&echo$'\e[u\e[A'${Cmd}-append\u something]
Cmd>sdasfa它似乎只在第一次出现时才起作用。@RainbowDashDC再来吗?@RainbowDashDC在这里感觉有点愚蠢,但实际上我们可以只计算向上移动的步数并向前移动到原始光标位置。提示的长度无论如何都不会改变。请参阅更新。@Boldewyn:Wikipedia也有它:。另一个: