bash - 覆盖终端上的最后一行

标签 bash terminal escaping

我的 bash 脚本如下所示:

echo "Description:"
while [ $finishInput -eq 0 ]; do
  read tmp
  desc="$desc"$'\n'"$tmp"
  if [ -z "$tmp" ]; then
    finishInput="1"
  fi
done
echo -n "Maintainer:"
read maintainer

它读取 desc var 直到传递一个空行。之后,我想阅读其他内容。

当执行我当前的脚本时,它看起来像这样:

Description:
Line 1
Line 2

Maintainer:

我想用“维护者:”覆盖最后一个空行。

我搜索了一个解决方案,但只找到类似的建议

echo -n "Old line"
echo -e "\r new line"

保留在行上并覆盖它。这对我来说是不可能的。

最佳答案

在您的示例中,您删除了同一行的文本。当您想返回上一行时,请使用 \e[1A , 要清除该行,请使用 \e[K :

echo 'Old line'
echo -e '\e[1A\e[Knew line'

想去的时候N排队,使用\e[<N>A

关于bash - 覆盖终端上的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11283625/

相关文章:

c - C语言代码如何在linux中设置路径环境变量

coldfusion - 删除 Coldfusion 字符串中的逗号

swift - 如何在 ""中打印双引号?

regex - 使用 Regex 识别文件名中两个不同子字符串中的任何一个?

bash - 使用 sed 或 awk 注释掉一个文件 block

bash - 你如何在后台执行多个 bash 函数但等待输出?

terminal - 如何在ubuntu终端中隐藏当前路径以及用户名和计算机名

macos - 使用 Unix 终端打开当前文件夹中具有指定扩展名的所有文件的命令?

java - 运行java管道到mutt

postgresql - Postgres - 转义列名中的问号 (?)