从终端上的命令行输出创建超链接

从终端上的命令行输出创建超链接

命令hostnamectl在没有参数的情况下执行时会将一堆信息转储到终端。其中之一是Operating System以下示例输出中显示的行:

$ hostnamectl  
 Static hostname: xxxxxx
       Icon name: computer-laptop
         Chassis: laptop
      Machine ID: e8..43
         Boot ID: 7b..2a
Operating System: Ubuntu 21.10
          Kernel: Linux 5.13.0-28-generic
    Architecture: x86-64
 Hardware Vendor: XXXXXX
  Hardware Model: XXXXXX

但是,输出“ Ubuntu 21.10”像超链接一样带有下划线,当您Ctrl+click 时,它将打开一个网络浏览器,其中包含以下链接地址:https://ubuntu.com/

这是如何实现的?终端命令是什么(转义序列?)我需要从基于文本的程序或脚本输出才能在终端上创建这样的超链接?

答案1

此信息不存在询问 Ubuntu,但我在另一个网站上找到了答案:https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda

转义序列创建上述链接的方法是:

printf '\e]8;;https://ubuntu.com/\e\\Ubuntu 21.10\e]8;;\e\\\n'

一般格式为:

  1. 超链接开放序列以。。开始
  • \e]8 转义序列ESC], 和8),
  • 参数
  • 目标 URI, 和
  • 结束\e\ 转义序列ESC\

其中params是可选的: \e]8;params;URI\e\\

  1. 然后是内容它将被描绘为超链接。

  2. 超链接是关闭使用相同的转义序列(如步骤 1 中所示),但省略参数URI,但保留分隔符:\e]8;;\e\\


作为这个答案的奖励,我建议您在文件中使用以下别名~/.bash_aliases

alias ll="LC_COLLATE=C ls --hyperlink=auto --group-directories-first --color=auto -alF"

这里,--hyperlink参数将指示ls命令自动创建超链接用于终端输出的文件名,这样当Ctrl单击它们时,它们将在鹦鹉螺或相关应用程序。

相关内容