tput

如何从使用 tput 的命令“渲染”输出,以便仅保留最终的终端后处理结果?
tput

如何从使用 tput 的命令“渲染”输出,以便仅保留最终的终端后处理结果?

我捕获了使用 tput 在屏幕上绘制某些内容的脚本的输出。当我执行 cat myoutput 时,一切都很清楚(看起来终端从头开始重新解释它),但是当我编辑或管道输出时,我看到大量的 ansi 序列以及破坏性打印之前的所有内容,例如 tput clear 等。 我怎样才能对其进行后处理,以便我只得到最终的“渲染”? 更好的是,其根源是我目前正在编写我的脚本,因此它将除了终端之外的所有内容都打印到文件中 和exec > >(tee /dev/tty) 有没有办法告诉标准输出通道在保存之前“渲染”所有内...

Admin

命令 tput sgr0 更改我的终端字体和文本颜色,如何停止此操作? tput sgr0 后的任何回显输出为粗体白色
tput

命令 tput sgr0 更改我的终端字体和文本颜色,如何停止此操作? tput sgr0 后的任何回显输出为粗体白色

当我tput sgr0这样做时,它将我的终端字体和颜色更改为白色(应该是黑色)并且看起来是块状的。 请看截图: 我该如何阻止这个? 为了更简洁,任何echo之后tput sgr 0似乎都输出为粗体白色,我的终端文本颜色是黑色。 更新: 我的~.bashrc: export LC_ALL="en_GB.UTF-8" export BASH_SILENCE_DEPRECATION_WARNING=1 branch() { git branch 2> /dev/null | \ grep \* | \ aw...

Admin

bash 脚本获取当前行和行不起作用
tput

bash 脚本获取当前行和行不起作用

我编写了以下脚本,以便在每次更改时打印出当前行和行,也就是每次我按向上、向下、向左或向右时,但输出始终相同: row:43:col:141 我相信这意味着屏幕的左上角,其中 0 0 位于右下角,但我不太确定。 这是我的脚本: #!/bin/bash echo "press a key" tput clear row=$(tput lines) col=$(tput cols) while true; do echo "row:$row:col:$col" K1=,K2=,K3= read -s -N1 ...

Admin

在 PS1 上方添加一个换行符,该换行符在前置后仍然存在
tput

在 PS1 上方添加一个换行符,该换行符在前置后仍然存在

在 OBSD ksh 中,我有一个 PS1,它前面有一个空行: PS1="\n[\u@\h] \w\n\$" 问题在于,当激活虚拟环境时, pyenv 会在虚拟环境的名称前面加上该名称。这是 pyenv 激活脚本的相关部分: PS1="(porcupine) ${PS1:-}" 这会吃掉空行,转动 [myusername@myhostname] ~/some/path $ echo foo foo [myusername@myhostname] ~/some/path $ 进入 (virtual-environment-name) [myuserna...

Admin

OpenBSD 中的“setaf”功能没有足够的参数
tput

OpenBSD 中的“setaf”功能没有足够的参数

我想改变外壳中的文本颜色。我可以用来tput获取正确的转义码。例如, echo "$(tput setaf 5)My text$(tput sgr0)" 输出My text呈粉红色调。 这在 Linux、macOS、FreeBSD、NetBSD 和 Solaris 上运行良好。然而,在 OpenBSD 7.2 上,我收到以下错误: tput: not enough arguments (3) for capability `setaf' 根据OpenBSD 文档tputterminfo,该属性应在或中定义termcap。我没有看到setaf定义的文档te...

Admin

`tput` 如何检测颜色支持
tput

`tput` 如何检测颜色支持

我试图让我的 shell 脚本支持尽可能多的终端,即仅在支持时添加 ANSI 颜色、粗体和暗色。但是,我想检测支持的颜色数量。我们可以用tput colors。 然而,我发现一些精简到最小的系统没有安装它。所以,我想在shell中实现它。 怎样tput colors运作?任何tput colors与 POSIX 命令等效的命令?请帮忙并解答。 ...

Admin

在 Ubuntu XTerm 中使用像 vim 和 screen 一样的 altscreen
tput

在 Ubuntu XTerm 中使用像 vim 和 screen 一样的 altscreen

当我退出屏幕时,我希望能够返回到终端,看起来就像我离开它一样。但现在,我所能做的就是通过修改我的文件来清除屏幕并将终端放在顶部或底部.screenrc。 我可以通过这样做获得我想要的交互tput smcup; screen -S hello; tput rmcup,但我不认为我可以轻松地使用别名或安全地将其变成函数*。我将如何更改我的.screenrc文件以获得此行为? 以下是我尝试过的其他 Stack Exchange 问题但效果甚微的内容: termcapinfo xterm|xterms|xs|rxvt ti@:te@ termcapinfo xter...

Admin

如何检查终端是否可以在 bash/zsh 脚本中显示 undercurl?
tput

如何检查终端是否可以在 bash/zsh 脚本中显示 undercurl?

如何检查终端是否可以在 bash/zsh 脚本中显示 undercurl? 在最近的一个项目中,我使用 undercurl 转义序列来打印 zsh 脚本的输出。它在现代终端中运行良好,但苹果的 Terminal.app 将其显示为相反的背景-前景。如果能够检测终端是否能够显示下划线,然后才使用下划线或默认使用常规下划线,那就太好了。 ...

Admin

terminfo/termcap `tput bold`/`tput md`:粗体文本的可移植性
tput

terminfo/termcap `tput bold`/`tput md`:粗体文本的可移植性

假设我的一个可移植 shell 脚本具有以下颜色支持: #!/bin/sh set -o nounset tput_init_linux () { set_fg_color='tput setaf'; reset_color=$(tput sgr0 2>/dev/null); } tput_init_bsd () { set_fg_color='tput AF'; reset_color=$(tput me 2>/dev/null); } tput_init_none () { set_fg_color=':'; ...

Admin

来自 initrd 的 tput
tput

来自 initrd 的 tput

我有一个使用 tput 并在 initrd 中运行的脚本。具体来说,我用来tput -T linux [sc|rc|ed] > /dev/tty0覆盖多行。 当我在 qemu 虚拟机中运行时,它工作得很好。当我在真机上运行它时,它不会覆盖这些行。 关于如何让它发挥作用有什么想法吗? ...

Admin

在 ~/.profile 中使用 $(tput ...) 设置 LESS_TERMCAP_* 变量不起作用
tput

在 ~/.profile 中使用 $(tput ...) 设置 LESS_TERMCAP_* 变量不起作用

这是我的~/.bashrc: # ...unnecessary lines skipped... # man colors LESS_TERMCAP_mb=$(tput blink) # start bold LESS_TERMCAP_md=$(tput setaf 2 ; tput bold) # start bold LESS_TERMCAP_me=$(tput sgr0) # turn off bold, blink and underline LESS_TERMCAP_so=$(tput smso) # start standout (rever...

Admin

如何让 bash 子命令清除对 TTY 的修改?
tput

如何让 bash 子命令清除对 TTY 的修改?

给出以下人为的示例(正确的示例是引导用户解决一系列问题,并将用户答案的​​计算结果回显到标准输出),我如何才能在子命令完成后清除对 TTY 的任何修改? result="$(echo 'sup' > /dev/tty; echo "$RANDOM"; sleep 2)"; echo "result=[$result]" ...

Admin

如何在 `tput smcup` 之后保留/恢复 stderr
tput

如何在 `tput smcup` 之后保留/恢复 stderr

给出以下人为示例,其目的是仅删除子命令的/dev/tty: result="$( tput smcup > /dev/tty tput cup 0 0 > /dev/tty echo 'meh' > /dev/tty echo 'nay' > /dev/stderr echo 'yay' > /dev/stdout tput rmcup > /dev/tty )"; echo "result=[$result]" 它输出: result=[yay] 但是,stderrnay不再保留在显示中。如何...

Admin

使用 tput 显示背景 256 色
tput

使用 tput 显示背景 256 色

我通过使用以下 bash 函数对背景颜色进行着色来显示 tput 的 256 种颜色。 tput-bgcolours () { for color in {0..255}; do bg=$(tput setab $color) echo -n $bg" " done echo $(tput sgr0) } 如何将一系列值传递给函数而不是查看 0 到 255 之间的所有颜色? ...

Admin