打印到终端末尾

2024-01-01

Like this picture of apt-get, how can I print something at the end of the line, just like the speed on the screen. Although I can use escape like \e[C to make it move several columns to the right and print, but the speed varies and the string length varies. Can anyone tell me how to do this? I am currently programming using bash. Thanks.apt-get


通常您会在环境变量中找到控制台窗口的宽度COLUMNS https://www.gnu.org/software/bash/manual/bashref.html#index-COLUMNS,但这并不完全可靠。更可靠的解决方案是使用tput带有参数的实用程序(ncurses 的一部分,但可以独立使用)cols:

$ echo $COLUMNS
148
$ tput cols
148

分割文本的一个简单方法是使用 Posix 标准printf实用程序首先打印要在右边距上对齐的文本并填充到列宽,然后输出回车符(\r) 将光标返回到行首,然后打印要在左边距对齐的文本。最后换行符将移动到下一行。或者,在代码中:

# Call it like this:
# print_both_sides "This goes on the left" "and this goes on the right."
print_both_sides() {
  printf "\r%*s\r%s\n" $(tput cols) "$2" "$1";
}

The printf格式使用的标准功能*替换字段宽度和精度格式修饰符;这*意味着相应的数字应该从参数中获取。在这种情况下,我使用$(tput cols)-- 即控制台窗口的宽度 -- 作为格式代码的第一个参数%*s,它具有右填充下一个字符串参数的效果("$2")在其宽度恰好是控制台宽度的字段中。

我在输出的开头添加了一个额外的回车符,以防光标当前不在左边距。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打印到终端末尾 的相关文章

随机推荐

  • 用于生物信息学/生物统计学/医学研究的 Clojure 或 Scala [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我不是一个专业的程序员 我的领域是医学研究 但我对C C 和各种脚本语言相当有能力 不久前我对 Lisp 很感兴趣 但一直没有时间认真学习它 短
  • Django可以自动创建相关的一对一模型吗?

    我在不同的应用程序中有两个模型 ModelA and ModelB 他们有一对一的关系 有没有办法让django自动创建并保存ModelB when ModelA被救了吗 class ModelA models Model name mod
  • 如何在 ASP.NET MVC 中禁用客户端和代理缓存?

    在 ASP NET MVC 中禁用页面缓存的正确 与浏览器无关 方法是什么 尝试这个 OutputCache NoStore true Duration 0 VaryByParam public ActionResult NonCachea
  • Python:Groupby 第一个非 NaN 值

    我有以下数据框 id number 1 13 1 13 1 NaN 1 NaN 2 11 2 11 2 11 2 NaN 我想找到每个 id 的第一个非 NaN 值并用 1 标记它 结果应如下所示 id number code 1 13 N
  • 如何在D3中点击添加或拖动?

    我的印象是这个问题太简单了 没有人费心去制作它的演示 但我对 D3 的了解还不够多 无法看出我做错了什么 我正在寻找的行为是 如果用户单击没有圆圈的地方 它将在那里创建一个圆圈 如果他们拖动现有的圆圈 则不会创建新的圆圈 但他们拖动的圆圈将
  • Firebase - 创建临时用户直到用户注册

    我有一个用例 用户 A 可以说用户 B 从用户 A 借了一些钱 类似于 Splitwise 等应用程序 我正在使用 firestore 来存储数据 在这种特殊情况下 我将其作为文档存储在 Transactions 集合中 该集合将具有以下字
  • CEdit::GetLine() Windows 7

    我有以下代码段 其中m edit是一个 CEdit 控件 TCHAR lpsz MAX PATH 1 get the edit box text m edit GetLine 0 lpsz MAX PATH 这在运行 Windows XP
  • 在 C# 中使用原始套接字

    我想用 C 编写一个端口扫描器 但无法使用 SocketType Raw 因为原始套接字是从 Windows 桌面版本中取出的 我无法使用 SharpPcap 或 Winpcap 的其他包装器 因为我使用 PPPoE 进行互联网连接 而 W
  • 检查奇数时 & 比 % 更快吗?

    要检查奇数和偶数 最低位检查是否比使用模数更有效 gt gt gt def isodd num return num 1 and True or False gt gt gt isodd 10 False gt gt gt isodd 9
  • MySQL 有命名约定吗?

    我是这样做的 表名是小写的 使用下划线分隔单词 并且是单数 例如foo foo bar etc 我通常 并非总是 有一个自动增量 PK 我使用以下约定 tablename id e g foo id foo bar id etc 当表包含作
  • xmlHttpRequest.onerror 处理程序用例

    什么样的情况会导致调用此处理程序 我没有找到此方法引发错误的任何实例 我尝试让设备离线 我得到xmlHttpRequest status 0但没有错误 问题是我可以创建什么样的情况来测试此处理程序的功能 var xmlhttp new XM
  • C++/CLI 中的文字字段与常量变量

    我正在阅读一些 C CLI 材料 并且遇到了文字字段的概念 literal int inchesPerFoot 12 这比 const 更好吗 因为 constFIELD不能存在 因为字段无法初始化自身 所以 class aClass pr
  • 如何通过 Azure DevOps 在 Dockerfile 中设置环境变量

    在我的项目 Docker 文件中 我有一些环境变量 如下所示 ENV ACCEPT EULA Y ENV SA PASSWORD Password ENV MSSQL PID Developer ENV MSSQL TCP PORT 143
  • 在应用程序域之间来回传递集合对象

    以下示例基于 在应用程序域之间来回传递值 https stackoverflow com questions 1250774 passing values back and forth appdomains 其中 Marc Gravell
  • 扩展运算符类似物

    我有一个结构体和该结构体的实例 type Obj struct ssid string code string mit string and other props 23 var ValidObject Obj ssid AK93 KADJ
  • Android 应用程序连接到网络服务 - 不工作

    我正在尝试将我的应用程序连接到我在 asp net 中创建的 WCF 服务 该服务在我的本地计算机上运行 http localhost 8080 Service svc http localhost 8080 Service svc 但由于
  • 批量归一化 - Tensorflow

    我看过一些 BN 的例子 但还是有点困惑 所以我目前正在使用这个函数 它调用这里的函数 https github com tensorflow tensorflow blob master tensorflow g3doc api docs
  • 解压 sys.argv 时 Pylint 误报

    我有一个解压脚本sys argv到一个函数中 像这样 import sys def do something a b It doesn t matter what this function does print a b if name m
  • WPF 链绑定

    我想创建一个像这样的链绑定 我有一个用户控件 在具有类似依赖属性的窗口内具有依赖属性 我想将用户控件的依赖属性绑定到窗口的依赖属性 我创建了一个示例项目来演示我的问题 用户控件1 XAML
  • 打印到终端末尾

    Like this picture of apt get how can I print something at the end of the line just like the speed on the screen Although