| 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-S,cat一个二进制文件等) - (12) shell 中的引用/转义
- (11) 各种 Windows/PowerShell 问题
还有 122 个回答表示"没什么真正的问题"或"只是我不能在终端中做所有事情"
一个示例评论:
我想我已经找到了解决大多数/所有沮丧的方法
我不会对这些结果做太多评论,但这里有几个对我来说感觉相关的类别:
- 记住语法和历史记录(通常你需要记住的东西是你以前运行过的东西!)
- 可发现性和学习曲线(缺乏可发现性肯定是使其难以学习的一大部分)
- "切换系统很困难"和"感觉过时"(30 或 40 年来没有真正改变的工具有很多问题,但它们确实倾向于无论你在什么系统上都_存在_,这非常有用,使它们难以停止使用)
尝试以合理的方式对所有这些结果进行分类,真的让我对社会科学研究人员的技能有了更深的认识。