我想做这样的事情:
user@myserver$echo -en "\rSome text to overwrite same line command is on"
问题是我最终得到的是这样的:
Some text to overwrite same line command is onuser@myserver$
如果我echo -e
这样做的话我会得到这个:
Some text to overwrite same line command is on
user@myserver$
这没问题,只是它会导致控制台滚动。我不希望它滚动,因为我的 tmux 控制台窗口只有一行高。我尝试用空格填充字符串的右侧,但这无法正常工作。
答案1
$ echo -en "\rSome text"
在这里,\r
没有做太多事情,因为它将光标返回到行的开头,但是在命令行上按 Enter 键后,光标已经位于提示后面的行的开头。就像在一个简单的 echo 中一样,输出在其自己的一行中:
$ echo foo
foo
因此,您无法很好地覆盖相同的命令行(至少在此之前不滚动新命令行)。但如果您只关心显示的最后一行,则不需要这样做。你只需要防止下一个打印提示。您可以read
在继续之前等待一些输入(按 Enter 键)。光标停留在_
后面bar
。
$ echo -n foo bar ; read
foo bar_
答案2
尝试
echo -en "\rSome text to overwrite same line command is on\n"