linux - linux printf到指定的终端行
问题描述
在yocto中,当我使用bibake构建一个 recipe 时,与这个 recipe 相关的阶段会打印成多行,非常漂亮。所以我想实现一个像它这样的小例子。
- 获取当前光标所在行
- 运行 2 个线程,一个在row + 1输出一些东西,另一个在row + 2输出一些东西
结果,我失败了。然后我运行 2 个执行相同操作的进程,再次失败。
有人可以给我一些建议吗?我想要的是这样的:
ts:/home/test$ ./program1 &; ./program1 &
program1's output.....................
program2's output.....................
解决方案
在 Bash 中:
#!/usr/bin/env bash
printf '\n\n'
echo -ne "\033[6n"
read -rs -d\[ _
read -rs -dR foo
cursor_pos=$(cut -d";" -f1 <<< "$foo")
upper_row=$((cursor_pos - 2))
lower_row=$((cursor_pos - 1))
echo -ne "\033[${upper_row};0H"
echo upper row
sleep 2
echo -ne "\033[${lower_row};0H"
echo lower low
sleep 2
echo -ne "\033[${upper_row};0H"
printf "\r\e[0K%s\n" "upper again"
sleep 2
echo -ne "\033[${lower_row};0H"
printf "\r\e[0K%s\n" "lower again"
推荐阅读
- javascript - 如何将“凭据:包含”添加到 d3.json 方法?D3.js
- cocoapods - 无法在 Xcode10 中运行/编译 AudioKit V4.3
- python - 如何在 Mollweide 视图(Python)中绘制背景图像?
- spring - CORS:响应中缺少授权标头(jQuery / Spring)
- kubernetes - Kubernetes 机密和服务帐户
- python - python - 如何将装饰器应用于用 C 编写的 Python 函数?
- javascript - prev状态不一致
- python-2.x - 使用 vanilla Python 库进行字符到子字符串的转换
- node.js - 节点模块 pg client.end() 不关闭连接
- r - R Keras - 带有拟合错误的超级简单 LSTM 示例