如何覆盖 shell 脚本中的多行?

2023-11-26

我想一遍又一遍地向终端写入多行。就像是

echo "One Line"
echo "Two Lines"
echo "\r\b\rThree Lines"
echo "Four Lines"

理想情况下,这首先会输出:

One Line
Two Lines

然后这个输出将被替换为

Three Lines
Four Lines

问题是,虽然回车符可以让你覆盖一行输出,但你不能用 \b 跳过 \n。然后我如何覆盖多行?


我找到了一个解决方案,需要进行一些挖掘,但我仍然不完全确定这个解决方案是如何工作的。然而,程序 tput 似乎允许您获取特殊字符来清除行并定位光标。具体来说,tput el将清除到当前行的开头(而不是仅仅重新定位光标)。方便的是,tput cuu1会将光标向上移动一行。因此,如果在 bash 脚本中声明如下变量:

UPLINE=$(tput cuu1)
ERASELINE=$(tput el)

然后您可以编写如下脚本:

UPLINE=$(tput cuu1)
ERASELINE=$(tput el)
echo "One Line"
echo "Two Lines"
echo "$UPLINE$ERASELINE$UPLINE$ERASELINE\c"
echo "Three Lines"
echo "Four Lines"

你会得到想要的输出。

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

如何覆盖 shell 脚本中的多行? 的相关文章

随机推荐

  • React 和 Webpack:加载图像并将其显示为背景图像

    我正在创建一个类似横幅的组件 并将图像设置为组件的背景 但我无法让它工作 我尝试了网上发布的不同建议 但没有成功 目前我不确定我的错误是否在反应代码中 或者是 webpack 没有正确加载文件 这是我的文件结构 AppFolder clie
  • 如何计算PCKE的code_verifier?

    我正在经历Okta PKCE 流程演示为了更好地理解它是如何工作的 但我在重现同样的事情时遇到了困难code challenge生成的哈希值code verifier 这是演示的屏幕截图 Using Zg6klgrnixQJ629GsawR
  • ES6/Babel 类构造函数不能在没有“new”的情况下调用

    我正在尝试创建一个自定义羽毛笔主题 扩展气泡主题 我面临一个奇怪的 ES6 继承问题 我似乎无法调用super 在我的构造函数中 这是我的代码 import BubbleTheme BubbleTooltip from quill them
  • .frame(高度: nil) 的 SwiftUI 行为

    问题 我收到一个线程问题 内容为 无效的框架尺寸 负或非有限 这是我的代码 struct CellStyle ViewModifier func body content Content gt some View content frame
  • 从 Node 实例获取完整的 xml 文本

    我用Java读取了XML文件 代码如下 File file new File file xml DocumentBuilderFactory dbf DocumentBuilderFactory newInstance DocumentBu
  • 替换元素中所有出现的字符串

    我想替换给定元素的所有后代元素 的文本 中的特定字符串 innerHTML不能使用 因为该序列可以出现在属性中 我尝试过使用 XPath 但似乎该界面本质上是只读的 因为这仅限于一个元素 所以函数如下document getElements
  • 无法在 python pandas 中获得未堆叠的条形图

    这很奇怪 我似乎无法在 python pandas 中获得未堆叠的条形图 与 pandas 官方指南不同 这些条似乎只是重叠的 而不是横向放置的 知道为什么会这样吗 df plot kind bar stacked False figsiz
  • Java 中的监视器是什么?

    Java并发编程中的监视器指的是什么 当我读到 每个对象都关联一个监视器 时 这是什么意思 它是一个特殊的物体吗 监视器是控制对对象的并发访问的机制 这允许您执行以下操作 主题 1 public void a synchronized so
  • 检测页面是否加载完成

    有没有办法检测页面何时完成加载 即所有内容 javascript 以及 css 和图像等资产 so like if PAGE HAS FINISHED LOADING do something amazing 另外 如果页面加载时间超过 1
  • Oracle EXECUTE IMMEDIATE 到游标中

    我有一个存储过程 它使用了EXECUTE IMMEDIATE命令执行一个很长的字符串 如何支持很长的字符串并将数据返回到引用游标中 假设您的 SQL 不超过 32K 正如 Tony Andrews 暗示的那样 您应该能够使用如下内容 dec
  • 简单自定义类型的“未定义用户定义类型”

    在 Excel 2007 中 我在 VBA 中有以下非常简单的代码 Public Type specType sb As Long End Type Private Sub MyButton Click Dim spec As specTy
  • iPhone SDK - 获取/计算相机视野 (FOV)(增强现实)

    有没有办法通过调用 API 来找出或计算 iPhone 相机的视野 FOV 还是您必须亲自亲自找出答案 如果无法使用 API 获取或计算它 而是必须将其硬编码到应用程序中 那么找出应用程序正在运行的设备类型的最佳方法是什么 不同的设备有不同
  • 使用anaconda在Windows上安装tensorflow

    我正在尝试在我的 Windows PC 上安装 Tensorflow 由于我已经在 Python 3 5 上安装并使用了 Anaconda 因此我已按照说明进行操作https www tensorflow org versions r0 8
  • 如何设置Cmder不换行文本输出

    Cmder 的默认设置是换行文本输出 但如何设置Cmder不换行文本输出呢 Cmder 我的意思是 http cmder net 到目前为止 我不认为有办法禁用文本换行 有人确实提出了相关问题禁用换行 然而 正如特色ConEmu 的路线图
  • 在 Tomcat jruby-rack 上使用 log4j 记录 Rails 3 应用程序

    我刚刚花了 3 个小时的大部分时间尝试使用 Log4j 来记录我的 Rails 应用程序 我终于让它工作了 但我不确定我所做的是否正确 我尝试了各种方法都没有效果 直到最后一次尝试 所以我真的在这里寻找一些验证 也许还有一些指示和技巧 说实
  • 多次选择同一行

    我有一张表 其中有一个主对象的一些子对象 任何子项都可以出现多次 并且有一个包含该数字的 Occurences 列 因此表中的数据类似于 ChildID ParentID Occurences 1 1 2 2 1 2 3 2 1 4 2 3
  • 如何在 Windows Phone 7 中创建连续动画?

    我知道 Windows Phone 7 中有一个连续过渡 但它似乎尚未包含在 silverlight 工具包中 有什么想法如何创建一个吗 提前致谢 UPDATE 最后我从 Kevin Marshall 那里拿了一些代码优秀的帖子关于 wp7
  • 使用 Launch4J 将 JRE 捆绑到 exe 中

    我正在尝试使用 launch4j 将 JRE 捆绑到我的 exe 中 我的文件夹结构如下 test jre copied from my windows installation of jre bin lib jretest jar the
  • 转到特定修订版

    我克隆了某个项目的 git 存储库 我可以将文件转至初始状态 然后在查看文件时转到修订版 2 3 4 最新版本吗 我想了解一下该项目的发展情况 执行前请记住 此命令会让您陷入困境头部分离状态 Use git checkout
  • 如何覆盖 shell 脚本中的多行?

    我想一遍又一遍地向终端写入多行 就像是 echo One Line echo Two Lines echo r b rThree Lines echo Four Lines 理想情况下 这首先会输出 One Line Two Lines 然