标签 终端 下的文章

原文观点

今日 Linux 中国发布了一篇文章 《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》 。该文主要观点引用如下:

  • Windows Terminal 是一个套在 Windows 操作系统原本的 CMD、Powershell、Windows Subsystem for Linux(WSL)之上的一个界面更加漂亮、功能更加强大的终端工具。严格来说,它是套在 CMD 、Powershell 之上的一个终端。
  • 它也只是一个终端而已,而不是一个更加好用的 Shell。
  • Windows 用户所吐槽的命令行不好用不在于其表面,而在于其没有一个足够好用的 Shell。
  • 看起来,Windows Terminal 和 WSL 的结合,已经非常完美了,但作为一个 Shell 来用的话,又显的过于笨重。
  • WSL 无论做的再怎么好,无法摆脱它只是一个运行于 Windows 系统中附属的子系统。无论 WSL 做的再好,本质上并没有比虚拟机做的更多。
  • 作为生态的打造者,微软真正可以做好的是,打造一个能够在体验和生态上与 Unix Shell 一致的 Shell,或者是干脆提供 Bash、Zsh 等常用 Shell 的原生支持(WSL 虽然支持 Bash、Zsh等,但依然是需要先进入 WSL 才能使用,但你可以畅想一下,如果 CMD 变成了 Bash,会是什么样的呢?)。
  • 对于广大使用 Windows 开发的用户来说,一个闪闪发亮的、现代化的、功能强大的终端固然很好,但好的终端只不过是锦上添花之举,而一个强大好用的 Shell 才是真正能够雪中送炭的东西,只有一个足够好用的 Shell,才能成为 Windows 命令行世界的救世主。

关于原文更完整的观点,请参阅原文。这里针对原文观点和表达一些不同意见的商榷。

Terminal 与 Shell

诚如原文所说,Windows Terminal 其实是一个窗口而已,真正执行的是里面的软件,但是 Windows Terminal 并不如原文说的那么一无是处。众所周知 CMD、PowerShell 默认进入以后是没有标签的,想要使用多个只能多开窗口,管理起来不如够方便,而且配色也是影响使用者快速定位问题的一个重要指标。而这次的 Windows Terminal 不但解决这些问题,还能够支持 emoji,可大大提升在里面所运行的程序的使用体验。

再来说说什么是 shell ?一个 shell 是提供用户与操作系统交互的界面/入口,当我们在命令行中输入各种命令时,其实就是在执行一个应用程序,shell 将这些程序送往内核进行执行,所以最终还是要归到内核的系统调用,此外广义上的 shell 其实还包括了图形界面。

让我们来看看第一个点:

  • Windows Terminal 是一个套在 Windows 操作系统原本的 CMD、Powershell、Windows Subsystem for Linux(WSL)之上的一个界面更加漂亮、功能更加强大的终端工具。严格来说,它是套在 CMD 、Powershell 之上的一个终端。

Windows Terminal 准确来说就是一个支持配色的更加现代的终端入口,也不能说是嵌套什么 CMD、PowerShell、WSL,你想怎么使用它取决于你想进入什么样的命令行解释器。举个 Linux 下的例子就是我可以在 konsole 下使用 fish、zsh、bash 等 shell 解释器。

更好用的 shell?

  • 它也只是一个终端而已,而不是一个更加好用的 Shell。
  • Windows 用户所吐槽的命令行不好用不在于其表面,而在于其没有一个足够好用的 Shell。
  • 看起来,Windows Terminal 和 WSL 的结合,已经非常完美了,但作为一个 Shell 来用的话,又显的过于笨重。

关于这里,我觉得原文作者忽视了 Shell 与 Terminal 的区别。Shell 作为一个命令解释器,必然有自己的语法。而 Linux 生态系统中已经很好用的 shell 就有 fish、zsh、bash 等,但是这些语法也不是所有都兼容的,而且一个好用的 shell 一般只是用户感觉上的东西,没有很明确的指标。Windows 用户在有了 WSL 之后可以使用任何 Linux 已经有的 shell 解释器,这其实已经足够解决问题了,毕竟这些工具的改进是为了吸引 Linux 平台上的开发者,而不是为了一个毫无经验的小白准备的。

此外,原文作者提到的 Windows Terminal 与 WSL(搭载完整内核) 结合作为 shell 使用的话,无异于高射炮打蚊子。这点我也是强烈反对的,首先 shell 只是一个命令解释器,它其实不负责命令的执行,最终所有的程序都要传递给系统调用,如果底层的系统调用不支持,那么该 shell 脚本也是无法执行的(内核不会有反应、或者报错),所以你要使用 shell,那么必须要求有底层内核的支持,这不是什么高射炮打不打蚊子的事,而是你必须要知道其实 shell 它自己本身就是个解释器,没有别的特异功能而已。

一个更好用的 shell 也许是值得吸引人的,但是其实 shell 的语法也不见得多好用,很多反人类的,只是我们已经学习接受了这种语法所以认可它。另一个方面是历史问题,要想你写的脚本一次编写处处执行,那么最好就是 bash 兼容了,否则别人为了执行你的特殊语法,还要装一个能读懂你的 shell 语法的解释器。

wsl 与虚拟机?

  • WSL 无论做的再怎么好,无法摆脱它只是一个运行于 Windows 系统中附属的子系统。无论 WSL 做的再好,本质上并没有比虚拟机做的更多。

我其实觉得这句话没有道理,为什么这样说呢,确实 WSL 不会比虚拟机做的更多,因为你虚拟机安装的是一个完整的操作系统,但是 WSL 优势是什么?

WSL 的优势就是不需要虚拟机,你便可以使用大部分 Linux 的生态,这是向开发人员示好。而且 WSL 不需要长期运行一个虚拟机,在 WSL1 的时候,你实际执行应用 WSL 会把系统调用转成 NT 系统调用。而 WSL2 将包含完整 Linux 内核,还将支持 Docker(此处无法得知它具体的实现,不做推测)。WSL1 的限制很多,使用起来不是特别方便,这个有使用过的朋友应该很有体会,但是 WSL2 既然能运行 Docker,那么有了 Docker 我就有了一切。

生态体验?

  • 作为生态的打造者,微软真正可以做好的是,打造一个能够在体验和生态上与 Unix Shell 一致的 Shell,或者是干脆提供 Bash、Zsh 等常用 Shell 的原生支持(WSL 虽然支持 Bash、Zsh等,但依然是需要先进入 WSL 才能使用,但你可以畅想一下,如果 CMD 变成了 Bash,会是什么样的呢?)。
  • 对于广大使用 Windows 开发的用户来说,一个闪闪发亮的、现代化的、功能强大的终端固然很好,但好的终端只不过是锦上添花之举,而一个强大好用的 Shell 才是真正能够雪中送炭的东西,只有一个足够好用的 Shell,才能成为 Windows 命令行世界的救世主。

这两个观点也是不攻自破的,我既然可以使用 WSL,那么我本身就拥有了 Linux 的生态。如果是希望写 bat 批处理而能有 bash、zsh 的这些体验,那么确实是需要一个新的 shell 满足 Unix Shell 语法,再来解释 Windows 下的命令行,可是这其实也是不需要的。因为本人发现在 WSL 里面执行一个 exe 程序是完全可行的,因此可以用这种 shell 语法去编写我的脚本,oh nice!!体验非常统一啊有没有?

locez@Lenovo-PC~> pycharm64.exe  ### 会启动我的 pycharm
locez@Lenovo-PC~> git.exe | xargs echo

我的观点

我本人认为,微软的这些拥抱 Linux 的举措,其实就是在吸引 Linux 上的开发者而已,开发者想要的工具,如果能够在 Windows 下就能直接使用,那对我们这些开发人员来说无外乎是喜报。工具多一个总不是坏事,但是如果它真的值得使用,那么用户一定会增加,这就是需要微软来做的事情了。我本人是双系统用户,在打游戏娱乐方面我一定会使用 Windows,做开发写代码我会切换到 Linux,曾经写一个很小的软件也是如此。但是后来 WSL 出现了,简单的脚本我可以在 Windows 下就直接完成并且提交,不需要重启系统,然后继续玩我的游戏,美滋滋。

另外就是 Windows Terminal 与 WSL2 的出现会解放我现在系统上的一些工具,例如 git bash、gpg4win 等。如果 WSL2 真的有完整的系统调用,那么我现有的 Windows 上的开发环境便不再需要,专注于游戏娱乐,但是一进 WSL 便是我工作学习的地方。

Windows Terminal 发布以后,立刻引爆了整个技术圈,各种社交媒体上纷纷传播着它的消息,它开源的 GitHub 仓库的星标数一路飙升,迅速成为当日 GitHub 趋势榜的首名,甚至连它 issue 区都挤满了人——以至于项目运营团队紧急出场管理。不过,在我观看了相关的资料和视频以后,感觉并没有那么令人兴奋。

在我看到一时间出现的很多文章,都视 Windows Terminal 为 Windows 下命令行体验的救世主之后,我觉得,是时候泼一盆冷水降降温了。

Windows Terminal 项目下的讨论

Windows Terminal 是什么?

在泼冷水之前,我想先来介绍一下 Windows Terminal 是什么,以方便你理解我的观点:Windows Terminal 是一个套在 Windows 操作系统原本的 CMD、Powershell、Windows Subsystem for Linux(WSL)之上的一个界面更加漂亮、功能更加强大的终端工具。严格来说,它是套在 CMD 、Powershell 之上的一个终端。

Windows Terminal 效果图

Powershell on Windows Terminal。图片来源:https://devblogs.microsoft.com/commandline/introducing-windows-terminal/

这里需要了解一下 终端 terminal 和 shell 的区别:

在命令行中,shell 提供了访问操作系统内核功能的途径,比如说我们所熟悉的 bash、zsh,都是不同的 shell;而终端则为 shell 提供视觉界面(窗口),比如我们所熟悉的 iTerm2、Linux 桌面上的终端工具等。甚至于我们在 VSCode 中所使用的命令行,也是某种意义上的终端。

我们在 Windows 下所使用的 CMD、Powershell 既然是一个终端,也是一个 Shell,还是同名的脚本系统。

但是,它也只是一个终端而已,而不是一个更加好用的 Shell

为什么 Windows Terminal 不是救世主?

作为一个终端,Windows Terminal 无疑是合格的,它提供了非常强大的功能,来自微软的强大工程能力也让它能够吸引更多的眼球。

Cmder 效果图。图片来源:Cmder 官网

但是,如果仅仅是一个终端,其实开源社区早已有更多的解决方案,比如 cmderConEmuHyper 等等,这些 Terminal 也足够好看和好用。

 ConEmu 效果图

ConEmu效果图。图片来源:ConEmu 官网

这种第三方就可以做好的事情,微软官方的进入不过是在现有的命令行生态下提供更多的一种选择,而不是真正的问题解决方案。

当我们吐槽 Windows 命令行时,我们在吐槽什么?

那么我们是对什么不满意呢?Windows 用户所吐槽的命令行不好用不在于其表面,而在于其没有一个足够好用的 Shell。 Windows 下的两个命令行界面都各有自己的问题,CMD 因为时间久远,很多功能不齐全。而 Power Shell 虽然功能强大,但不合理的命令语法,大量冗长的、驼峰式命名的命令和参数使得用户的命令操作极为不便,体验极差。如果没有一个足够好用的 Shell ,无论换了多少外面的终端,无非是披了一个闪闪发光的、半透明的漂亮外衣罢了。

对于开发者们来说,真正希望 Windows 做的,不是一个更漂亮的终端。漂亮的终端只能让他们一时新鲜,但是如果希望开发者们真正感觉到 Windows 命令行好用,就需要提供一个更加强大的 Shell,帮助开发者能够用上 Unix 式的命令行工具。

Windows Terminal + Windows Subsystem for Linux ?

在 Microsoft Build 2019 大会上,除了 Windows Terminal 以外,还发布了 Windows Subsystem for Linux 2(WSL2)。新一代的 WSL 相比于上一代,提供了完整的 Linux 内核,将会提供更好的系统支持。看起来,Windows Terminal 和 WSL 的结合,已经非常完美了,但作为一个 Shell 来用的话,又显的过于笨重。

WSL 2 所提供的,不过是一个更加简单、更加易用的 Windows 下的虚拟机,你不再需要安装 Virtual Box、VMWare 而已,一个 Windows Subsystem for Linux 就可以满足开发者的大部分需求。

但是,这并不能解决问题,这治标不治本的选择。WSL 无论做的再怎么好,无法摆脱它只是一个运行于 Windows 系统中附属的子系统。无论 WSL 做的再好,本质上并没有比虚拟机做的更多。

作为一个开发者,我认为什么才是微软真正应该做的?

Windows Love Linux

Windows Love Linux。图片来源:https://cloudblogs.microsoft.com/windowsserver/2015/05/06/microsoft-loves-linux/

作为 Windows 系统的开发者,微软真正的价值显然不是做一个终端那么简单。作为生态的打造者,微软真正可以做好的是,打造一个能够在体验和生态上与 Unix Shell 一致的 Shell,或者是干脆提供 Bash、Zsh 等常用 Shell 的原生支持(WSL 虽然支持 Bash、Zsh等,但依然是需要先进入 WSL 才能使用,但你可以畅想一下,如果 CMD 变成了 Bash,会是什么样的呢?)。这些事情是第三方开发者所无法做的更好的,只有生态的构建者在一开始就将一个体验良好的 Shell 放置在系统的核心,无需开发者自行安装、配置,才能够让开发者真正拥有一个好的命令行体验。如果微软能提供一个足够好用的 Shell,我相信类似于 Windows Terminal 这样的应用,会如雨后春笋一般,从开源社区中源源不断的冒出来。

总结

对于广大使用 Windows 开发的用户来说,一个闪闪发亮的、现代化的、功能强大的终端固然很好,但好的终端只不过是锦上添花之举,而一个强大好用的 Shell 才是真正能够雪中送炭的东西,只有一个足够好用的 Shell,才能成为 Windows 命令行世界的救世主。而这,才是真正值得微软花费大量的时间、精力去做的。

延展阅读

了解一下 DomTerm,这是一款终端模拟器和复用器,带有 HTML 图形和其它不多见的功能。

DomTerm 是一款现代化的终端模拟器,它使用浏览器引擎作为 “GUI 工具包”。这就支持了一些相关的特性,例如可嵌入图像和链接、HTML 富文本以及可折叠(显示/隐藏)命令。除此以外,它看起来感觉就像一个功能完整、独立的终端模拟器,有着出色 xterm 兼容性(包括鼠标处理和 24 位色)和恰当的 “装饰” (菜单)。另外它内置支持了会话管理和副窗口(如同 tmuxGNU Screen 中一样)、基本输入编辑(如在 readline 中)以及分页(如在 less 中)。

图 1: DomTerminal 终端模拟器。

在以下部分我们将看一看这些特性。我们将假设你已经安装好了 domterm (如果你需要获取并构建 Dormterm 请跳到本文最后)。开始之前先让我们概览一下这项技术。

前端 vs. 后端

DomTerm 大部分是用 JavaScript 写的,它运行在一个浏览器引擎中。它可以是像例如 Chrome 或者 Firefox 一样的桌面浏览器(见图 3),也可以是一个内嵌的浏览器。使用一个通用的网页浏览器没有问题,但是用户体验却不够好(因为菜单是为通用的网页浏览而不是为了终端模拟器所打造),并且其安全模型也会妨碍使用。因此使用内嵌的浏览器更好一些。

目前以下这些是支持的:

  • qdomterm,使用了 Qt 工具包 和 QtWebEngine
  • 一个内嵌的 Electron(见图 1)
  • atom-domterm 以 Atom 文本编辑器(同样基于 Electron)包的形式运行 DomTerm,并和 Atom 面板系统集成在一起(见图 2)
  • 一个为 JavaFX 的 WebEngine 包装器,这对 Java 编程十分有用(见图 4)
  • 之前前端使用 Firefox-XUL 作为首选,但是 Mozilla 已经终止了 XUL

 title=

图 2:在 Atom 编辑器中的 DomTerm 终端面板。

目前,Electron 前端可能是最佳选择,紧随其后的是 Qt 前端。如果你使用 Atom,atom-domterm 也工作得相当不错。

后端服务器是用 C 写的。它管理着伪终端(PTY)和会话。它同样也是一个为前端提供 Javascript 和其它文件的 HTTP 服务器。domterm 命令启动终端任务和执行其它请求。如果没有服务器在运行,domterm 就会自己来服务。后端与服务器之间的通讯通常是用 WebSockets(在服务器端是libwebsockets)完成的。然而,JavaFX 的嵌入既不用 Websockets 也不用 DomTerm 服务器。相反 Java 应用直接通过 Java-Javascript 桥接进行通讯。

一个稳健的可兼容 xterm 的终端模拟器

DomTerm 看上去感觉像一个现代的终端模拟器。它处理鼠标事件、24 位色、Unicode、倍宽字符(CJK)以及输入方式。DomTerm 在 vttest 测试套件 上工作地十分出色。

其不同寻常的特性包括:

展示/隐藏按钮(“折叠”): 小三角(如上图 2)是隐藏/展示相应输出的按钮。仅需在提示符中添加特定的转义字符就可以创建按钮。

对于 readline 和类似输入编辑器的鼠标点击支持: 如果你点击输入区域(黄色),DomTerm 会向应用发送正确的方向键按键序列。(可以通过提示符中的转义字符启用这一特性,你也可以通过 Alt+点击 强制使用。)

用 CSS 样式化终端: 这通常是在 ~/.domterm/settings.ini 里完成的,保存时会自动重载。例如在图 2 中,设置了终端专用的背景色。

一个更好的 REPL 控制台

一个经典的终端模拟器基于长方形的字符单元格工作的。这在 REPL(命令行)上没问题,但是并不理想。这里有些通常在终端模拟器中不常见的 REPL 很有用的 DomTerm 特性:

一个能“打印”图片、图形、数学公式或者一组可点击的链接的命令: 应用可以发送包含几乎任何 HTML 的转义字符。(HTML 会被剔除部分,以移除 JavaScript 和其它危险特性。)

图 3 显示了来自 gnuplot 会话的一个片段。Gnuplot(2.1 或者跟高版本)支持 DormTerm 作为终端类型。图形输出被转换成 SVG 图片,然后被打印到终端。我的博客帖子在 DormTerm 上的 Gnuplot 展示在这方面提供了更多信息。

图 3:Gnuplot 截图。

Kawa 语言有一个创建并转换几何图像值的库。如果你将这样的图片值打印到 DomTerm 终端,图片就会被转换成 SVG 形式并嵌入进输出中。

图 4:Kawa 中可计算的几何形状。

富文本输出: 有着 HTML 样式的帮助信息更加便于阅读,看上去也更漂亮。图片 1 的下面面板展示 dormterm help 的输出。(如果没在 DomTerm 下运行的话输出的是普通文本。)注意自带的分页器中的 PAUSED 消息。

包括可点击链接的错误消息: DomTerm 可以识别语法 filename:line:column 并将其转化成一个能在可定制文本编辑器中打开文件并定位到行的链接。(这适用于相对路径的文件名,如果你用 PROMPT_COMMAND 或类似的跟踪目录。)

编译器可以侦测到它在 DomTerm 下运行,并直接用转义字符发出文件链接。这比依赖 DomTerm 的样式匹配要稳健得多,因为它可以处理空格和其他字符并且无需依赖目录追踪。在图 4 中,你可以看到来自 Kawa Compiler 的错误消息。悬停在文件位置上会使其出现下划线,file: URL 出现在 atom-domterm 消息栏(窗口底部)中。(当不用 atom-domterm 时,这样的消息会在一个浮层的框中显示,如图 1 中所看到的 PAUSED 消息所示。)

点击链接时的动作是可以配置的。默认对于带有 #position 后缀的 file: 链接的动作是在文本编辑器中打开那个文件。

结构化内部表示:以下内容均以内部节点结构表示:命令、提示符、输入行、正常和错误输出、标签,如果“另存为 HTML”,则保留结构。HTML 文件与 XML 兼容,因此你可以使用 XML 工具搜索或转换输出。命令 domterm view-saved 会以一种启用命令折叠(显示/隐藏按钮处于活动状态)和重新调整窗口大小的方式打开保存的 HTML 文件。

内建的 Lisp 样式优美打印: 你可以在输出中包括优美打印指令(比如,grouping),这样断行会根据窗口大小调整而重新计算。查看我的文章 DomTerm 中的动态优美打印以更深入探讨。

基本的内建行编辑,带着历史记录(像 GNU readline 一样): 这使用浏览器自带的编辑器,因此它有着优秀的鼠标和选择处理机制。你可以在正常字符模式(大多数输入的字符被指接送向进程);或者行模式(通常的字符是直接插入的,而控制字符导致编辑操作,回车键会向进程发送被编辑行)之间转换。默认的是自动模式,根据 PTY 是在原始模式还是终端模式中,DomTerm 在字符模式与行模式间转换。

自带的分页器(类似简化版的 less):键盘快捷键控制滚动。在“页模式”中,输出在每个新的屏幕(或者单独的行,如果你想一行行地向前移)后暂停;页模式对于用户输入简单智能,因此(如果你想的话)你无需阻碍交互式程序就可以运行它。

多路复用和会话

标签和平铺: 你不仅可以创建多个终端标签,也可以平铺它们。你可以要么使用鼠标或键盘快捷键来创建或者切换面板和标签。它们可以用鼠标重新排列并调整大小。这是通过 GoldenLayout JavaScript 库实现的。图 1 展示了一个有着两个面板的窗口。上面的有两个标签,一个运行 Midnight Commander;底下的面板以 HTML 形式展示了 dormterm help 输出。然而相反在 Atom 中我们使用其自带的可拖拽的面板和标签。你可以在图 2 中看到这个。

分离或重接会话:tmux 和 GNU screen 类似,DomTerm 支持会话安排。你甚至可以给同样的会话接上多个窗口或面板。这支持多用户会话分享和远程链接。(为了安全,同一个服务器的所有会话都需要能够读取 Unix 域接口和一个包含随机密钥的本地文件。当我们有了良好、安全的远程链接,这个限制将会有所放松。)

domterm 命令 类似与 tmux 和 GNU screen,它有多个选项可以用于控制或者打开单个或多个会话的服务器。主要的差别在于,如果它没在 DomTerm 下运行,dormterm 命令会创建一个新的顶层窗口,而不是在现有的终端中运行。

tmuxgit 类似,dormterm 命令有许多子命令。一些子命令创建窗口或者会话。另一些(例如“打印”一张图片)仅在现有的 DormTerm 会话下起作用。

命令 domterm browse 打开一个窗口或者面板以浏览一个指定的 URL,例如浏览文档的时候。

获取并安装 DomTerm

DomTerm 可以从其 Github 仓库获取。目前没有提前构建好的包,但是有详细指导。所有的前提条件在 Fedora 27 上都有,这使得其特别容易被搭建。


via: https://opensource.com/article/18/1/introduction-domterm-terminal-emulator

作者:Per Bothner 译者:tomjlw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这四个不同的终端模拟器 —— 不仅可以完成工作,还可以增加一些乐趣。

让我们面对现实,如果你是 Linux 管理员,那么你要用命令行来工作。为此,你将使用终端模拟器(LCTT 译注:常简称为“终端”,与终端本身的原意不同)。最有可能的是,你选择的发行版预先安装了一个可以完成工作的默认终端模拟器。但这是有很多选择可供选择的 Linux,所以这种思想自然也适用于终端模拟器。实际上,如果你打开发行版的图形界面的包管理器(或从命令行搜索),你将找到大量可能的选择。其中许多是非常简单的工具;然而,有些是真正独特的。

在本文中,我将重点介绍四个这样的终端模拟器,它们不仅可以完成工作,而且可以使工作变得更有趣或更好玩。那么,让我们来看看这些终端。

Tilda

Tilda 是为 Gtk 设计的,是一种酷炫的下拉终端。这意味着该终端始终运行在后台,可以随时从显示器顶部拉下来(就像 Guake 和 Yakuake)。让 Tilda 超越许多其他产品的原因是该终端可用的配置选项数量(图 1)。

可以从标准的软件库安装 Tilda。在基于 Ubuntu(或 Debian)的发行版上,安装非常简单:

sudo apt-get install tilda -y

安装完成后,从桌面菜单中打开 Tilda,这也将打开其配置窗口。根据你的喜好配置应用程序,然后关闭配置窗口。然后,你可以通过点击 F1 热键来打开和关闭 Tilda。对使用 Tilda 的一个警告是,在第一次运行后,你将找不到有关如何打开配置向导的任何提示。别担心。只要运行命令 tilda -C,它将打开配置窗口,同时仍会保留你之前设置的选项。

可用选项包括:

  • 终端大小和位置
  • 字体和颜色配置
  • 自动隐藏
  • 标题
  • 自定义命令
  • URL 处理
  • 透明度
  • 动画
  • 滚动
  • 等等

我喜欢这些类型的终端是因为当你不需要时它们很容易就会消失,只需按一下按钮即可。对于那些不断进出于终端的人来说,像 Tilda 这样的工具是理想的选择。

Aterm

Aterm 在我心中占有特殊的位置,因为它是我第一次使用的终端之一,它让我意识到 Linux 的灵活性。 这要回到 AfterStep 成为我选择的窗口管理器时(没用了太久),而且那时我是命令行新手。Aterm 提供的是一个高度可定制的终端仿真器,同时帮助我了解了使用终端的细节(如何给命令添加选项和开关)。或许你会问:“你觉得怎么样?”。因为 Aterm 从未有过用于定制选项的图形界面。要使用任何特殊选项运行 Aterm,必须以命令选项的方式运行。例如,假设你要启用透明度、绿色文本、白色高亮和无滚动条。为此,请运行以下命令:

aterm -tr -fg green -bg white +xb

最终结果(top 命令运行用于说明)看起来如图 2 所示。

 title=

图 2:使用了一些定制选项的 Aterm

当然,你必须先安装 Aterm。幸运的是,这个应用程序仍然可以在标准软件库中找到,因此在 Ubuntu 上安装就像下面这样简单:

sudo apt-get install aterm -y

如果你想总是用这些选项打开 Aterm,最好的办法是在 ~/.bashrc 文件中创建一个别名,如下所示:

alias=”aterm -tr -fg green -bg white +sb”

保存该文件,当你运行命令 aterm 时,它将始终打开这些选项。有关创建别名的更多信息,请查看这个教程

Eterm

Eterm 是第二个真正告诉我 Linux 命令行可以带来多少乐趣的终端。Eterm 是 Enlightenment 桌面的默认终端模拟器。当我最终从 AfterStep 迁移到 Enlightenment 时(那时早在 20 世纪初),我担心我会失去所有那些很酷的美学选择。结果并非如此。实际上,Eterm 提供了许多独特的选项,同时使用终端工具栏使任务变得更容易。使用 Eterm,你可以通过从 “Background > Pixmap” 菜单条目中轻松地从大量背景图像中选择一个背景(如果你需要一个的话,图 3)。

 title=

图 3:从大量的背景图中为 Eterm 选择一个。

还有许多其他配置选项(例如字体大小、映射警报、切换滚动条、亮度、对比度和背景图像的透明度等)。 你要确定的一件事是,在你配置 Eterm 以满足你的口味后,需要单击 “Eterm > Save User Settings”(否则,关闭应用程序时所有设置都将丢失)。

可以从标准软件库安装 Eterm,其命令如下:

sudo apt-get install eterm

Extraterm

Extraterm 应该可以赢得当今终端窗口项目最酷功能集的一些奖项。Extraterm 最独特的功能是能够以彩色框来包装命令(蓝色表示成功命令,红色表示失败命令。图 4)。

 title=

图 4:Extraterm 显示有两个失败的命令框。

在运行命令时,Extraterm 会将命令包装在一个单独的颜色框中。如果该命令成功,则该颜色框将以蓝色轮廓显示。如果命令失败,框将以红色标出。

无法通过标准软件库安装 Extraterm。事实上,在 Linux 上运行 Extraterm(目前)的唯一方法是从该项目的 GitHub 页面下载预编译的二进制文件,解压缩文件,切换到新创建的目录,然后运行命令 ./extraterm

当该应用程序运行后,要启用颜色框,你必须首先启用 Bash 集成功能。为此,请打开 Extraterm,然后右键单击窗口中的任意位置以显示弹出菜单。滚动,直到看到 “Inject Bash shell Integration” 的条目(图 5)。选择该条目,然后你可以开始使用这个颜色框选项。

 title=

图 5:为 Extraterm 插入 Bash 集成。。

如果你运行了一个命令,并且看不到颜色框,则可能必须为该命令创建一个新的颜色框(因为 Extraterm 仅附带一些默认颜色框)。为此,请单击 “Extraterm” 菜单按钮(窗口右上角的三条水平线),选择 “Settings”,然后单击 “Frames” 选项卡。在此窗口中,向下滚动并单击 “New Rule” 按钮。 然后,你可以添加要使用颜色框的命令(图 6)。

 title=

图 6:为颜色框添加新规则。

如果在此之后仍然没有看到颜色框出现,请从下载页面下载 extraterm-commands 文件,解压缩该文件,切换到新创建的目录,然后运行命令 sh setup_extraterm_bash.sh。这应该可以为 Extraterm 启用颜色框。

还有更多可用于 Extraterm 的选项。我相信,一旦你开始在终端窗口上玩这个新花招,你就不会想回到标准终端了。希望开发人员可以尽快将这个应用程序提供给标准软件库(因为它很容易就可以成为最流行的终端窗口之一)。

更多

正如你可能预期的那样,Linux 有很多可用的终端。这四个代表四个独特的终端(至少对我来说),每个都可以帮助你运行 Linux 管理员需要运行的命令。如果你对其中一个不满意,用你的包管理器找找有什么可用的软件包。你一定会找到适合你的东西。


via: https://www.linux.com/blog/learn/2018/12/4-unique-terminals-linux

作者:Jack Wallen 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

不久前,我们讨论了 Fim,这是一个轻量级的命令行图像查看器应用程序,用于从命令行显示各种类型的图像,如 bmp、gif、jpeg 和 png 等。今天,我偶然发现了一个名为 lsix 的类似工具。它类似于类 Unix 系统中的 ls 命令,但仅适用于图像。lsix 是一个简单的命令行实用程序,旨在使用 Sixel 图形格式在终端中显示缩略图。对于那些想知道的人来说,Sixel 是 六像素 six pixels 的缩写,是一种位图图形格式。它使用 ImageMagick,因此几乎所有 imagemagick 支持的文件格式都可以正常工作。

功能

关于 lsix 的功能,我们可以列出如下:

  • 自动检测你的终端是否支持 Sixel 图形格式。如果你的终端不支持 Sixel,它会通知你启用它。
  • 自动检测终端背景颜色。它使用终端转义序列来试图找出终端应用程序的前景色和背景色,并清楚地显示缩略图。
  • 如果目录中有更多图像(通常大于 21 个),lsix 将一次显示这些图像,因此你无需等待创建整个蒙太奇图像(LCTT 译注:拼贴图)。
  • 可以通过 SSH 工作,因此你可以轻松操作存储在远程 Web 服务器上的图像。
  • 它支持非位图图形,例如 .svg、.eps、.pdf、.xcf 等。
  • 用 Bash 编写,适用于几乎所有 Linux 发行版。

安装 lsix

由于 lsix 使用 ImageMagick,请确保已安装它。它在大多数 Linux 发行版的默认软件库中都可用。 例如,在 Arch Linux 及其变体如 Antergos、Manjaro Linux 上,可以使用以下命令安装ImageMagick:

$ sudo pacman -S imagemagick

在 Debian、Ubuntu、Linux Mint:

$ sudo apt-get install imagemagick

lsix 并不需要安装,因为它只是一个 Bash 脚本。只需要下载它并移动到你的 $PATH 中。就这么简单。

从该项目的 GitHub 主页下载最新的 lsix 版本。我使用如下命令下载 lsix 归档包:

$ wget https://github.com/hackerb9/lsix/archive/master.zip

提取下载的 zip 文件:

$ unzip master.zip

此命令将所有内容提取到名为 lsix-master 的文件夹中。将 lsix 二进制文件从此目录复制到 $PATH 中,例如 /usr/local/bin/

$ sudo cp lsix-master/lsix /usr/local/bin/

最后,使 lsix 二进制文件可执行:

$ sudo chmod +x /usr/local/bin/lsix

如此,现在是在终端本身显示缩略图的时候了。

在开始使用 lsix 之前,请确保你的终端支持 Sixel 图形格式。

开发人员在 vt340 仿真模式下的 Xterm 上开发了 lsix。 然而,他声称 lsix 应该适用于任何Sixel 兼容终端。

Xterm 支持 Sixel 图形格式,但默认情况下不启用。

你可以从另外一个终端使用命令来启动一个启用了 Sixel 模式的 Xterm:

$ xterm -ti vt340

或者,你可以使 vt340 成为 Xterm 的默认终端类型,如下所述。

编辑 .Xresources 文件(如果它不可用,只需创建它):

$ vi .Xresources

添加如下行:

xterm*decTerminalID    :   vt340

按下 ESC 并键入 :wq 以保存并关闭该文件。

最后,运行如下命令来应用改变:

$ xrdb -merge .Xresources

现在,每次启动 Xterm 就会默认启用 Sixel 图形支持。

在终端中显示缩略图

启动 Xterm(不要忘记以 vt340 模式启动它)。以下是 Xterm 在我的系统中的样子。

就像我已经说过的那样,lsix 非常简单实用。它没有任何命令行选项或配置文件。你所要做的就是将文件的路径作为参数传递,如下所示。

$ lsix ostechnix/logo.png

如果在没有路径的情况下运行它,它将显示在当前工作目录中的缩略图图像。我在名为 ostechnix 的目录中有几个文件。

要显示此目录中的缩略图,只需运行:

$ lsix

看到了吗?所有文件的缩略图都显示在终端里。

如果使用 ls 命令,则只能看到文件名,而不是缩略图。

你还可以使用通配符显示特定类型的指定图像或一组图像。

例如,要显示单个图像,只需提及图像的完整路径,如下所示。

$ lsix girl.jpg

要显示特定类型的所有图像,例如 PNG,请使用如下所示的通配符。

$ lsix *.png

对于 JEPG 类型,命令如下:

$ lsix *jpg

缩略图的显示质量非常好。我以为 lsix 会显示模糊的缩略图。但我错了,缩略图清晰可见,就像在图形图像查看器上一样。

而且,这一切都是唾手可得。如你所见,lsixls 命令非常相似,但它仅用于显示缩略图。如果你在工作中处理很多图像,lsix 可能会非常方便。试一试,请在下面的评论部分告诉我们你对此实用程序的看法。如果你知道任何类似的工具,也请提出建议。我将检查并更新本指南。

更多好东西即将到来。敬请关注!

干杯!


via: https://www.ostechnix.com/how-to-display-thumbnail-images-in-terminal/

作者:SK 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

使用 eDEX-UI 让你的工作更有趣,这是我们开源工具系列中的第 15 个工具,它将使你在 2019 年更高效。

每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心,渴望开启新的一年,当然,“抛弃旧的,拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件,但事实上并不用这样。

这是我挑选出的 19 个新的(或者对你而言新的)开源工具中的第 15 个工具来帮助你在 2019 年更有效率。

eDEX-UI

《电子世界争霸战》上映时我才 11 岁。我不能否认,尽管这部电影充满幻想,但它对我后来的职业选择产生了影响。

eDEX-UI 是一款专为平板电脑和台式机设计的跨平台终端程序,它的用户界面受到《电子世界争霸战》的启发。它在选项卡式界面中有五个终端,因此可以轻松地在任务之间切换,以及显示有用的系统信息。

在启动时,eDEX-UI 会启动一系列的东西,其中包含它所基于的 ElectronJS 系统的信息。启动后,eDEX-UI 会显示系统信息、文件浏览器、键盘(用于平板电脑)和主终端选项卡。其他四个选项卡(被标记为 EMPTY)没有加载任何内容,并且当你单击它时将启动一个 shell。eDEX-UI 中的默认 shell 是 Bash(如果在 Windows 上,则可能需要将其更改为 PowerShell 或 cmd.exe)。

更改文件浏览器中的目录也将更改活动终端中的目录,反之亦然。文件浏览器可以执行你期望的所有操作,包括在单击文件时打开关联的应用。唯一的例外是 eDEX-UI 的 settings.json 文件(默认在 .config/eDEX-UI),它会打开配置编辑器。这允许你为终端设置 shell 命令、更改主题以及修改用户界面的其他几个设置。主题也保存在配置目录中,因为它们也是 JSON 文件,所以创建自定义主题非常简单。

eDEX-UI 允许你使用完全仿真运行五个终端。默认终端类型是 xterm-color,这意味着它支持全色彩。需要注意的一点是,输入时键会亮起,因此如果你在平板电脑上使用 eDEX-UI,键盘可能会在人们看见屏幕的环境中带来安全风险。因此最好在这些设备上使用没有键盘的主题,尽管在打字时看起来确实很酷。

虽然 eDEX-UI 仅支持五个终端窗口,但这对我来说已经足够了。在平板电脑上,eDEX-UI 给了我网络空间感而不会影响我的效率。在桌面上,eDEX-UI 支持所有功能,并让我在我的同事面前显得很酷。


via: https://opensource.com/article/19/1/productivity-tool-edex-ui

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出