(UNIX) Shell

(UNIX) Shell

2024 南京大学《操作系统:设计与实现》
(UNIX) Shell

再次回到 “操作系统”

center

2024 南京大学《操作系统:设计与实现》
(UNIX) Shell

终于可以回答一个困扰大家很久的问题

《操作系统》课上的操作系统

  • Everything is a state machine
  • 操作系统 = 对象 + API
  • 操作系统 = C 程序

大家眼中的操作系统

  • 看不到操作系统
  • 看到的是使用系统调用的应用程序
  • 因此有一个应用程序是特殊的
    • 直接和用户交互
    • 配置操作系统、启动/管理其他应用
2024 南京大学《操作系统:设计与实现》
(UNIX) Shell

Shell: Kernel 的 “外壳”

center w:full

基本功能:启动系统中的应用程序
2024 南京大学《操作系统:设计与实现》
(UNIX) Shell

The UNIX Shell

“终端” 时代的伟大设计

  • “Command-line interface” (CLI) 的巅峰

center

2024 南京大学《操作系统:设计与实现》
(UNIX) Shell

The UNIX Shell (cont'd)

center

UNIX Shell: “把用户指令翻译成系统调用” 的编程语言

  • “搭建一个临时工具组合”
  • 原来我们一直在编程
    • 直到有了 Graphical Shell (GUI)
    • Windows, Gnome, Symbian, Android
2024 南京大学《操作系统:设计与实现》
(UNIX) Shell

编程语言:Pros and Cons

优点:高效、简介、精确

  • 一种 “自然编程语言”
  • 短短一行命令,即可协同多个程序执行
  • 我们已经看过很多例子了
    • make -nB | grep ...

缺点:新手不友好

  • 你需要了解很多工具和它们的命令行参数
  • “Unix is user-friendly; it's just choosy about who its friends are.”
2024 南京大学《操作系统:设计与实现》
(UNIX) Shell

The Shell Programming Language

基于文本替换的快速工作流搭建

  • 重定向: cmd > file < file 2> /dev/null
  • 顺序结构: cmd1; cmd2, cmd1 && cmd2, cmd1 || cmd2
  • 管道: cmd1 | cmd2
  • 预处理: $(), <()
  • 变量/环境变量、控制流……

Job control

  • 类比窗口管理器里的 “叉”、“最小化”
    • jobs, fg, bg, wait
    • (今天的 GUI 并没有比 CLI 多做太多事)
2024 南京大学《操作系统:设计与实现》
(UNIX) Shell

人工智能时代,我们为什么还要读手册?

今天的人工智能还是 “被动” 的

  • 它还不能很好地告诉你,“应该去找什么”
  • Manual 是一个 complete source
    • AI 可以帮助你更快速地浏览手册、理解程序的行为

ChatGPT: Read the Friendly Manual

  • man sh - command interpreter
  • 阅读体验前所未有地上升
2024 南京大学《操作系统:设计与实现》