UNIX Shell: Traps and Pitfalls

在 “自然语言”、“机器语言” 和 “1970s 的算力” 之间达到优雅的平衡

  • 平衡意味着并不总是完美

  • 操作的 “优先级”?
    • ls > a.txt | cat
      • 我已经重定向给 a.txt 了,cat 是不是就收不到输入了?
    • bash/zsh 的行为是不同的
      • 所以脚本一般都是 #!/bin/bash 甚至 #!/bin/sh 保持兼容
  • 文本数据 “责任自负”
    • 有空格?后果自负!
    • (PowerShell: 我有 object stream pipe 啊喂)

另一个有趣的例子

$ echo hello > /etc/a.txt
bash: /etc/a.txt: Permission denied

$ sudo echo hello > /etc/a.txt
bash: /etc/a.txt: Permission denied

展望未来

Open question: 我们能否从根本上改变管理操作系统的方式?


需求分析

  • Fast Path: 简单任务
    • 尽可能快
    • 100% 准确
  • Slow Path: 复杂任务
    • 任务描述本身就可能很长
    • 需要 “编程”

未来的 Shell

自然交互/脑机接口:心想事成

  • Shell 就成为了一个应用程序的交互库
    • UNIX Shell 是 “自然语言”、“机器语言” 之间的边缘地带

系统管理与语言模型

  • fish, zsh, Warp, ...
  • Stackoverflow, tldr, thef**k (自动修复)
  • Command palette of vscode (Ctrl-Shift-P)
  • Predictable
    • 流程很快 (无需检查),但可能犯傻
  • Creative
    • 给你惊喜,但偶尔犯错