如何修改终端的给定行?

如何修改终端的给定行?

从字面上看,我想打印到终端上的任何显示行。我记得我们在大学里就学过这个,但那是很久以前的事了。有这个命令吗?

像这样:

___________ ___________ |blah | |blah | |bla | |blah | |randomtext | |blah | |xy | -----> |blah | |hjkl | |blah | |prompt> | |prompt> | |___________| |___________|

答案1

tput cup您可以使用命令将光标移动到任意 X,Y 坐标

例如

tput cup 10 3

将带您到第 10 行第 3 列(坐标从左上角 0,0 开始)

所以一个简单的脚本,例如

clear
echo line 1
echo line 2
echo line 3
tput cup 1 5
echo another line
tput cup 10 0

将导致类似的输出

line 1
line another line
line 3








$

(其中 是$您的提示)。

第一个tput命令将光标移回到前面的行,允许echo覆盖已经存在的内容。

答案2

存在xterm 控制序列提供了多种方式来破坏终端显示,通常是通过命令tput(1)curses库。或者冒着可移植性问题的风险,您可以直接发出转义序列。

#!/usr/bin/env zsh
tput sc
for i in {1..10}; do
    echo -ne "\x1b[${i};${i}H\x1bKblah"
done
tput rc

终端也可以进入原始模式,然后读取光标位置,良好的读取可能是线路噪声库看看这是如何完成的。

相关内容