AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 780532
Accepted
Ed Morton
Ed Morton
Asked: 2024-07-21 20:32:52 +0800 CST2024-07-21 20:32:52 +0800 CST 2024-07-21 20:32:52 +0800 CST

我怎样才能让 tput 填充整个背景而不留边框?

  • 772

我在 Windows 笔记本电脑上的 cygwin 中使用 bash。我希望能够将终端的背景颜色更改为绿色(实际颜色无关),为此我可以使用以下任一命令:

  1. tput setb 2; echo
  2. printf '\e]11;#00FF00\a'

有关其printf功能的更多信息,请参阅如何设置 Linux 控制台屏幕的背景颜色,背景的具体用法11记录在https://invisible-island.net/xterm/ctlseqs/ctlseqs.pdf(Ps = 1 0 → Change VT100 text foreground color to Pt.和Ps = 1 1 → Change VT100 text background color to Pt.)的第 34 页中。

立即printf更改整个终端的背景,而tput仅设置接下来输入的颜色,因此echo从下一个空行开始,但我不太关心这些。我最关心的是以下内容:

留下tput了原始背景颜色的小边框(浅米色,通过单击终端左上角的“选项”GUI 设置),如下图所示(图像左下角周围的浅灰色是我的 Windows 桌面颜色):

在此处输入图片描述

改变printf边框的颜色(与 相比,它是较浅的绿色,tput但这并不重要):

在此处输入图片描述

但它不会改变设置的背景区域,tput除非我首先重新初始化原来的操作tput,tput init; echo然后执行printf:

在此处输入图片描述

printf只要我不先使用,我就可以使用它来获得我想要的东西tput setb,但我更愿意只在可以移植的情况下使用tput setb,那么 - 为什么要tput留下现有背景颜色的小边框,有什么方法可以告诉tput以不留下小边框的方式设置背景颜色?

我还想知道是否有办法tput立即设置整个终端背景,printf而不是在我输入下一个字符串之后,但这并不像摆脱边框那么重要。

现在@MarcusMüller在评论中向我暗示这可能是一个mintty问题 -

git bash当我在另一台机器上使用 Windows 时,我看到了同样的行为。它们显然都用作mintty终端仿真器。由于我必须登录到许多不同的 Windows 机器并使用cygwin或git bash,我希望能够解决这个问题,而不必每次使用其中一台机器时都更改终端仿真器(我甚至不确定是否/如何做到这一点)。事实上,如果要通过更改终端仿真器来解决问题tput,我只会使用这种printf方法。

我在set-border-width-for-mintty-window-on-cygwin-windows-10中找到了一种方法,通过~/.minttyrc设置Padding变量来控制边框宽度,如果我将其更新为:

Padding=0

那么这确实可以解决上述tput问题,但是

  1. 这意味着我必须.minttyrc在每台登录的机器上更改,然后重新启动终端,并且
  2. 当我打开“选项”GUI 来更改有关终端的任何内容然后保存时,它会覆盖该.minttyrc文件并删除Padding设置

所以我仍然想找到某种方法来简单地告诉tput填充该“填充”区域,就像填充背景的其余部分一样。

@Vilinkameni还在评论中指出,tput在 a minttyandMSYS2 MINGW64终端中使用上述命令时,任何ls --color使用颜色的后续命令或其他命令进行的 ANSI SGR 颜色切换都会有效地再次重置颜色。如果我使用上述命令,则不会发生这种情况,printf因此我可能会在后续问题中询问。

另请参阅底部的“更改颜色” https://code.google.com/archive/p/mintty/wikis/Tips.wiki#Changing_colours,了解有关上述内容printf和其他相关内容的更多信息mintty。我的$TERM值是xterm。

terminal
  • 1 1 个回答
  • 63 Views

1 个回答

  • Voted
  1. Best Answer
    Ed Morton
    2024-07-26T19:46:29+08:002024-07-26T19:46:29+08:00

    从进一步阅读和我的问题下评论中的讨论中我能得出的最好的答案是 - 不要使用tput setb 2这个,而是使用这个printf方法:

    printf '\e]11;#00FF00\a'
    

    因为:

    1. 该tput方法仅为您输入的下一个内容设置背景颜色,而printf对整个终端也执行此操作。
    2. 该tput方法离开了我的问题中描述的边界,同时printf填满了整个终端。
    3. Padding=0虽然您可以通过设置来消除边框~/.minttyrc,但是您必须重新启动终端才能使其生效,并且如果/当您打开“选项”GUI 来更改终端的任何其他内容然后保存它时,它会覆盖该minttyrc文件并Padding再次删除该设置。
    4. tput如果/当您运行后续命令ls --color或其他使用颜色的命令时,该方法设置的背景将被重置,而使用该printf方法时背景将保持不变。
    • 0

相关问题

  • 寻找终端下载管理器

  • 语法错误:fd 编号错误?

  • traceroute,只打印网关信息

  • 如何在 ssh 上运行一瞥?

  • 备份 Nand Flash 存储区

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve