什么是命令行界面?

许多人将术语 命令 shell命令行工具终端 互换使用,这可能会令人困惑。 本文介绍这些概念之间的差异,并提供每个概念的示例。

命令行界面 是用于管理计算机的交互式命令行接口,也称为 读取Eval-Print 循环REPL)。

shell 从键盘获取输入,评估该输入,并将输入作为 shell 命令执行,或将输入转发到要执行的作系统。 大多数 shell 还可以从脚本文件读取命令,并且可以包括变量、流控制和函数等编程功能。

命令 shell 的类型

有两种主要的命令行解释器:

  • 常规用途命令 shell

    常规用途命令行界面旨在与操作系统配合使用,并允许您运行操作系统支持的任何命令。 它们还包括特定于 shell 的命令和编程功能。 以下列表包含常规用途命令 shell 的一些示例:

  • 实用命令行 Shell

    实用工具命令 shell 旨在与特定应用程序或服务配合使用。 这些 shell 只能运行特定于应用程序或服务的命令。 某些实用工具 shell 支持从批处理脚本运行命令,但不包括编程功能。 通常,这些 shell 只能以交互方式使用。

    • AI Shell - 一种仅交互式 shell,用于与 Azure OpenAI 等 AI 服务通信。
    • netsh - Network shell (netsh) 是一个命令行实用工具,可用于在 Windows 上配置和显示各种网络组件的状态。 它既是命令行工具和命令行界面。 它还支持从脚本文件运行命令。

命令行工具

命令行工具 是从命令行界面运行的独立程序。 命令行工具通常设计为执行特定任务,例如管理文件、配置设置或查询信息。 命令行工具可用于支持运行外部程序的任何 shell。

  • Azure CLI - 一组命令行工具,用于管理可在任何受支持的 shell 中运行的 Azure 资源。
  • Azure PowerShell - 一组 PowerShell 模块,用于管理可在任何受支持的 PowerShell 版本中运行的 Azure 资源。
  • OpenSSH for Windows - 包括一个命令行客户端和一个通过网络提供安全通信的服务器。
  • Windows 命令 - 内置于 Windows 中的命令行工具的集合。

通常,命令行工具不提供命令行界面(REPL)。 Windows 中的 netsh 命令是一个例外,因为它是命令行工具和交互式命令行命令行工具。

终端

终端 是一个应用程序,它提供用于托管命令 shell 的基于文本的窗口。 某些终端设计用于处理特定 shell,而另一些终端可以托管多个 shell。 它们还可以包括高级功能,例如:

  • 能够在单个窗口中创建多个窗格
  • 能够创建多个选项卡来托管多个 shell
  • 能够更改配色方案和字体
  • 支持复制和粘贴操作

以下列表包含终端应用程序的一些示例:

  • Windows 终端 - 一个可托管多个 shell 的 Windows 的新式终端应用程序。
  • Windows 控制台主机 - Windows 上用于基于文本的应用程序的默认主机应用程序。 它还可以托管 Windows Command Shell 或 PowerShell。
  • macOS 终端 - 可托管 bash 或 zsh shell 的 macOS 上的默认终端应用程序。
  • iTerm2 for macOS - macOS 的热门第三方终端应用程序。
  • Azure Cloud Shell - 一个基于浏览器的终端应用程序,托管在微软 Azure。 Azure Cloud shell 提供使用 bash 或 PowerShell 的选项。 每个 shell 都预配置了许多命令行工具来管理 Azure 资源。