将光标移动到终端窗口中特定位置的 Posix 命令

Xor*_*oso 4 terminal posix cursor

在学校,我们被分配了一项作业,我们假设在其中将 ascii 艺术打印到终端窗口中。输入是格式数据[x_coordinate, y_coordinate, char_ascii_value](不应该打印任何字符的坐标没有数据)。我实际上没有任何问题,但我想我只是懒得进入 for 循环并在每次没有字符数据时打印一个空白区域,然后转到终端中的另一行并执行相同的操作,等等.

所以我在想,一定有更简单的方法!由于我们只能使用 POSIX 中的命令,是否有任何命令可以让您将光标移动到终端中的特定位置?

我跑进命名的命令tputtput cup不正是我需要的,但我不能肯定是否tput cup是POSIX。

PS请不要把这当作某种作弊。我只是想找到一种方法让我的生活更轻松,而不是无脑地编写代码。

Ste*_*itt 6

正如mikeserv解释的那样,POSIX 没有指定tput cup. POSIX确实指定了tput但只是最低限度的。也就是说,tput cup得到了广泛的支持!

定位光标的标准化方法是使用ANSI 转义序列。要定位光标,您可以使用类似的东西

printf "\33[%d;%dH%s" "$Y" "$X" "$CHAR"
Run Code Online (Sandbox Code Playgroud)

这将$CHAR在 line$Y和 column打印$X。一个更完整的解决方案是

printf "\337\33[%d;%dH%s\338" "$Y" "$X" "$CHAR"
Run Code Online (Sandbox Code Playgroud)

这将恢复光标位置。