标签: ansi-term

如何找到终端中可用的垂直线数?

我正在编写一个脚本,当我进入目录时,它会显示目录的 git 日志。这样的日志可能会让人不知所措,包含数百行。到目前为止,我一直将其限制为硬编码的 20 行 ( ... | head -n 20),这在工作时的屏幕上很好,但在家里较小的 MacBook 屏幕上就太多了。

我希望日志在任一终端上占据大约一半(垂直)屏幕。并且“终端”也发生了变化:它在工作中是 Gnome 终端,但在家里是 iTerm2。而且我不使用屏幕或 tmux。

如何从命令行找到终端中可用的垂直线数?

bash terminal gnome-terminal ansi-term iterm

16
推荐指数
2
解决办法
6276
查看次数

这些 ANSI 艺术作品使用什么类型的编码?

我找到了这个网站;它有包含所有艺术品的zip 文件(主页链接)。其中一些具有.ans扩展名,它们看起来像在 Linux/Unix 上使用的 ANSI 转义码,但是当我cat在 XFce 终端中使用打开其中一个时,它会产生垃圾(但是是彩色的)。它们看起来不像图片库。

链接中主要图稿的第一行如下所示(从 Emacs 复制):

[0;1m[30mthere is no substitute [0;33mÜܲ[1;43m°±²²[40mÛ[43mÛ²±[0;33mÝ ßÜ[1;43m²²²[40mÛÛ²[40m[K
Run Code Online (Sandbox Code Playgroud)

文件类型是 DOS,但它们只能在 Windows 上创建。

在搜索 ANSI 艺术时,我还发现该网站的zip 文件仅包含带有.ans扩展名的文件,而且它们在 Linux 上也无法正确呈现(第 2 页的画廊)。

我的问题是:

  • 这是什么类型的编码,用于什么计算机?
  • 我需要一个特殊的查看器才能在 Linux 终端上看到它吗?
  • 你知道这种类型的艺术品是为 Linux/Unix 终端创作的吗?我只找到了 ASCII 艺术。
  • 是否可以将其转换为在 Linux 终端上查看?

linux ansi-term ansi

14
推荐指数
1
解决办法
2276
查看次数

$TERM 对 emacs 的 ansi-term 的正确值是多少,尤其是在 SSH 之后 'eterm-color' 不可用的情况下?

我目前设置$TERMxterm-256color

if [[ -n "$EMACS" ]]; then
    export TERM=xterm-256color
    alias emacs="emacsclient --no-wait"
    export EDITOR="emacsclient --no-wait"
    export VISUAL="emacsclient"
fi
Run Code Online (Sandbox Code Playgroud)

我曾经将它设置为eterm-color,但问题是这种终端类型在我通过 SSH 登录的大多数机器上不可用。

.bashrcUbuntu 中的默认值检查TERM变量是否以开头xterm-,在这种情况下,它会尝试设置窗口标题:

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
Run Code Online (Sandbox Code Playgroud)

问题是\[\e]0;一点。它应该由 xterm 兼容的终端模拟器解析,但 emacs (ansi-term) 不这样做。其结果是这样的终端:

0;user@host: ~user@host:~$ 
Run Code Online (Sandbox Code Playgroud)

readline当输入的文本大于终端的宽度时,它也会使用,破坏一些应用程序。

因为eterm-color在某些远程主机上不可用(而且我也无法安装它),将其设置为该值会使less.

有什么我可以使用的技巧,例如大多数发行版附带的另一种终端类型,或者使 ansi-term 识别相关转义码并设置标题的黑客,或者只是丢弃它们?

terminal emacs xterm ansi-term

7
推荐指数
1
解决办法
4789
查看次数

如何使用 ESC 序列使终端区域可滚动

我有一个 stm32f1 控制的设备,它使用 USART/USB 端口来实现用户控制界面。使用标准终端软件(putty/minicom),用户可以在设备外壳中输入简单的命令。

有一个问题。如果有许多传入的信息包,它们会通过 shell 提示打印,从而使输入新命令变得困难。

我计划将终端屏幕拆分为两个区域:一行提示和一个用于传入数据包的可滚动区域。

我尝试使用以下转义序列:

162 72 r * DECSTBM - Set top and bottom margins (scroll region on VT100)
        [4;20r = Set top margin at line 4 and bottom at line 20
Run Code Online (Sandbox Code Playgroud)

但仍然找不到一个很好的教程,它描述了一种可以帮助我解决问题的正确方法。

terminal escape-characters ansi-term

6
推荐指数
2
解决办法
4545
查看次数

使用 tmux 缓冲区副本(硬拷贝)捕获颜色

我正在使用以下行tmux来获取 GNU Screen 中的“硬拷贝”功能:

bind H capture-pane \; save-buffer -b 0 ~/tmux.hardcopy \; delete-buffer -b 0
Run Code Online (Sandbox Code Playgroud)

但是,ANSI 颜色不会被捕获到文件中。如何tmux保存 ANSI 转义序列,以便硬拷贝也有颜色?

colors tmux ansi-term

5
推荐指数
1
解决办法
1067
查看次数

以编程方式检测终端支持的 ANSI 转义码

我正在研究使用 ANSI 代码的 shell 脚本,发现由于某种原因,根据您的终端/操作系统支持不同的转义代码。

在某些情况下,我意外地得到了未解析的垃圾转储,我假设这意味着我的终端(在 Mac OS 上)不支持所使用的转义代码,尽管在很多地方都读到了这些含义相同的内容:

27 = 033 = 0x1b = ^[ = \e
Run Code Online (Sandbox Code Playgroud)

在搜索中,我发现了有关检测斜杠转义支持的问题

所选答案嗅探$TERM要检测的值

case $TERM in
  (|color(|?))(([Ekx]|dt|(ai|n)x)term|rxvt|screen*)*)
    PS1=$'\e\]0;$GENERATED_WINDOW_TITLE\a'"$PS1"
esac
Run Code Online (Sandbox Code Playgroud)

但我想知道这有多可靠。

是否有一种标准方法来检查转义码支持(主要针对 Bash),或者该脚本几乎是常规的?

  • 或者,我可以使用什么转义代码来“保证”最广泛的支持?
  • echo 扩展 -e 怎么样?
  • 对于使用或引用控制代码的脚本,在可移植性/可用性/分发方面有哪些一般最佳实践?

对于其他寻找信息的人来说,这也是一本很好的读物。

terminal escape-characters ansi-term

5
推荐指数
1
解决办法
6167
查看次数

为什么“cal”使用奇怪的 08 / ^H / \b 终端代码来突出显示以及它是如何工作的?

当您在 Linux 上运行 cal 时,当月的输出将反转视频突出显示当天。当我将该输出发送到 hexdump -c 时,我得到了一些有趣的结果:

0000000               N   o   v   e   m   b   e   r       2   0   1   6
0000010                          \n   S   u       M   o       T   u    
0000020   W   e       T   h       F   r       S   a          \n        
0000030                       1           2       _  \b       _  \b   3
0000040           4           5          \n       6           7        
0000050   8           9       1   0       1   1       1   2          \n
0000060   1   3       1   4       1   5       1   6       1   7       1
0000070   8       1   9          \n …
Run Code Online (Sandbox Code Playgroud)

highlighting escape-characters cal ansi-term

5
推荐指数
1
解决办法
816
查看次数

为 PS4 提示着色?

使用选项set -x,每个命令在执行前都会回显到 STDERR,并以扩展的 为前缀$PS4,并根据调用堆栈深度重复第一个字符。

我希望提示的输出$PS4是彩色的。即在哪里

(set -x; ls -l)
Run Code Online (Sandbox Code Playgroud)

当前将打印

+ ls -l
Run Code Online (Sandbox Code Playgroud)

我想要一个输出

\033[90m+ ls -l\033[0m
      \              \
       \              `- Reset color
        `- Muted gray
Run Code Online (Sandbox Code Playgroud)

然而,由于 PS4 在回显命令之前被打印,我想不出在执行命令\033[0m 之前重置颜色的方法。

有可能以某种方式做到这一点吗?

colors bash prompt ansi-term

5
推荐指数
0
解决办法
407
查看次数

闪烁代码(转义代码)已被删除?

根据Bash 提示:颜色和格式(ANSI/VT100 控制序列)我试图在我的程序中激活闪烁代码,但可能是闪烁代码已被消除。这是真的吗?

如果不正确,请帮助我使用闪烁代码。

escape-characters ansi-term

1
推荐指数
2
解决办法
3746
查看次数