Skip to content

Latest commit

 

History

History
213 lines (140 loc) · 9.74 KB

File metadata and controls

213 lines (140 loc) · 9.74 KB
title date authorURL originalURL translator reviewer
Julia Evans
2025-02-05 16:57:00 UTC

几周前我进行了一项终端调查(你可以在这里阅读结果),最后我问道:

对你来说,使用终端最令人沮丧的事情是什么?

1600 人回答了这个问题,我决定花几天时间对所有回答进行分类。在此过程中,我了解到对定性数据进行分类并不容易,但我尽力而为。我最终构建了一个自定义工具,使分类一切变得更快。

与我所有的调查一样,方法并不特别科学。我只是将调查发布到 Mastodon 和 Twitter 上,运行了几天,并从恰好看到它并愿意回应的人那里获得了答案。

以下是令人沮丧的主要类别!

我认为在阅读这些评论时值得记住:

  • 回答这项调查的人中有 40%已经使用终端21 年以上
  • 回答调查的人中有 95%使用终端至少 4 年

这些评论并非来自完全的初学者。

以下是令人沮丧的类别!括号中的数字是有这种沮丧的人数。我主要是为自己写这篇文章,因为我正在尝试写一本关于终端的小册子,我想了解人们遇到的问题。

人们谈到了记住以下内容的困难:

  • 像 awk、jq、sed 等 CLI 工具的语法
  • 重定向的语法
  • tmux、文本编辑等的键盘快捷键

一个示例评论:

要完全发挥功能,有太多小的"琐事"细节需要记住。即使经过这么多年,我有时仍会忘记 stderr 是 2 还是 1,或者忘记>>>哪个是哪个。

人们谈到了在切换系统(例如家庭/工作电脑或 SSH 时)时遇到的困难:

  • 键盘快捷键的操作系统差异(如 Linux 与 Mac)
  • 没有他们首选文本编辑器的系统("没有 vim"或"只有 vim")
  • 同一命令的不同版本(如 Mac OS grep 与 GNU grep)
  • 没有 tab 补全
  • 不习惯的 shell("zsh 和 bash 之间的微妙差异")

以及同一系统内的差异,如分页器彼此不一致(git diff 分页器,其他分页器)。

一个示例评论:

我习惯了 fish 和 vi 模式,但当我 ssh 进入服务器、容器时,这些都不可用。

关于颜色的许多问题,如:

  • 程序设置的颜色在浅色背景下不可读
  • 找到他们喜欢的配色方案(并使其在不同应用程序中一致工作)
  • 在多层 SSH/tmux 等内部颜色不起作用
  • 不喜欢默认设置
  • 完全不想要颜色并努力关闭它

这个评论对我来说很有共鸣:

在终端模拟器和 fish 之间以合理的方式配置我的终端主题(我多年前做过这件事,记得它既繁琐又麻烦,现在感觉我被锁定在当前主题中,因为它能工作,我害怕再次触碰任何那些配置)。

关于键盘快捷键的评论中,有一半是关于在 Linux/Windows 上,终端中的复制/粘贴键盘快捷键与操作系统其余部分不同。

除了复制/粘贴之外的其他键盘快捷键问题:

  • 在基于浏览器的终端中使用Ctrl-W并关闭窗口
  • 终端只支持有限的键盘快捷键(没有Ctrl-Shift-,没有Super,没有Hyper,许多ctrl-快捷键不可能,如Ctrl-,
  • 操作系统阻止你使用终端键盘快捷键(比如默认情况下 Mac OS 将Ctrl+左箭头用于其他用途)
  • 在终端中使用 emacs 的问题
  • 退格键不工作(2)

除了"复制和粘贴的键盘快捷键不同"之外,还有很多其他复制和粘贴问题,如:

  • 通过 SSH 复制
  • tmux 和终端模拟器以不同方式处理复制/粘贴
  • 处理多个不同的剪贴板(系统剪贴板、vim 剪贴板、Linux 上的"中键点击"剪贴板、tmux 的剪贴板等)并可能同步它们
  • 从终端复制时添加的随机空格
  • 粘贴多行命令,这些命令以可怕的方式自动运行
  • 希望有一种不使用鼠标复制文本的方法

有很多关于这方面的评论,都归结为同一个基本抱怨——很难发现有用的工具或功能!这个评论基本上总结了一切:

独立学习有多困难。我所知道的大部分都是多年来从随机人那里听到的各种东西的集合。

很多评论提到它通常有陡峭的学习曲线。几个示例评论:

使用它 15 年后,我的使用速度并不比 5 年甚至 10 年前快多少。

以及

我知道通过学习更多关于快捷键和命令以及配置终端,我可以让我的生活更轻松,但我不花时间,因为感觉太 overwhelming 了。

一些 shell 历史记录的问题:

  • 历史记录不在终端标签之间共享(16)
  • 限制太短(4)
  • 恢复终端标签时历史记录不被恢复
  • 因为终端崩溃而丢失历史记录
  • 不知道如何搜索历史记录

一个示例评论:

直到我弄明白它,它浪费了我很多时间,而且仍然让我感到恼火的是,zsh 上的"history"缓冲区如此之小;我必须输入"history 0"才能获得任何有用长度的历史记录。

人们谈到:

  • 文档通常晦涩难懂
  • man 页面中缺乏示例
  • 没有 man 页面的程序

这是一个有代表性的评论:

找到好的例子和文档。Man 页面通常不够,必须浏览 stack overflow

关于回滚的一些问题:

  • 程序打印出太多数据,使你失去回滚历史
  • 调整终端大小会搞乱回滚
  • 缺乏时间戳
  • 在后台启动的 GUI 程序打印出的东西妨碍了其他程序的输出

一个示例评论:

当调整终端大小(特别是:使其变窄)导致回滚内容的重新换行被破坏,因为命令根据终端窗口宽度格式化了它们的输出。

很多评论提到终端感觉受到遗留决策的阻碍,以及用户经常需要学习感觉非常深奥的实现细节。一个示例评论:

大部分遗留的东西,如果能有一个全新实现的 CLI 界面就太好了。

对 POSIX shell 脚本有很多抱怨。普遍感觉是 shell 脚本很难,但切换到不同的不太标准的脚本语言(fish、nushell 等)也会带来自己的问题。

Shell 脚本。我放弃 shell 脚本转向脚本语言的容忍度相当低。它太混乱且功能强大。搞砸可能代价高昂,所以我甚至不去尝试。

一些被提及至少 10 次的更多问题:

  • (31) 命令行参数不一致:是-h 还是 help 还是--help?
  • (24) 在不同系统之间保持 dotfiles 同步
  • (23) 性能(例如"我的 shell 启动时间太长")
  • (20) 窗口管理(可能结合了 tmux 标签、终端标签和多个终端窗口。那个 shell 会话去哪了?)
  • (17) 普遍感到害怕/不安("使用命令时可能会做一些神秘的坏事,而我将完全不知道如何修复或撤销它,甚至不知道发生了什么,这种令人衰弱的恐惧")
  • (16) terminfo 问题("如果/当我尝试新的终端模拟器并 ssh 到其他地方时,必须了解 terminfo。")
  • (16) 缺乏图像支持(sixel 等)
  • (15) SSH 问题(比如当你失去 SSH 连接时必须重新开始)
  • (15) 各种 tmux/screen 问题(例如 tmux 和终端模拟器之间缺乏集成)
  • (15) 拼写错误和打字慢
  • (13) 终端因各种原因被搞乱(按Ctrl-Scat一个二进制文件等)
  • (12) shell 中的引用/转义
  • (11) 各种 Windows/PowerShell 问题

还有 122 个回答表示"没什么真正的问题"或"只是我不能在终端中做所有事情"

一个示例评论:

我想我已经找到了解决大多数/所有沮丧的方法

我不会对这些结果做太多评论,但这里有几个对我来说感觉相关的类别:

  • 记住语法和历史记录(通常你需要记住的东西是你以前运行过的东西!)
  • 可发现性和学习曲线(缺乏可发现性肯定是使其难以学习的一大部分)
  • "切换系统很困难"和"感觉过时"(30 或 40 年来没有真正改变的工具有很多问题,但它们确实倾向于无论你在什么系统上都_存在_,这非常有用,使它们难以停止使用)

尝试以合理的方式对所有这些结果进行分类,真的让我对社会科学研究人员的技能有了更深的认识。