不清楚所有命令行界面 (CLI) 的含义,以及何时/为何使用它们

不清楚所有命令行界面 (CLI) 的含义,以及何时/为何使用它们

背景是这样的,我正在努力开始在 Windows、Mac OSX 和 LINUX 系统上使用命令行界面来完成我的所有工作。确实,与 GUI 相比,我们在命令提示符中拥有更多的灵活性,我很容易就看到了这一点。

我的问题是我很快就迷失在术语、CLI、这个系统与那个系统问题的森林里,等等。我通常会用 google/wiki 来搜索某个特定的程序,但我很难将它们全部“粘合”在一起。

我将非常感激有人能将它们连贯地粘贴在一起。

例如:在我的 Mac OSX 上,我已将“Iterm2”设置为命令行界面。在我的 LINIX 系统上,我知道“Terminator”很好用,我打算使用它。由于我也想在 Windows 上使用 CLI,所以我安装了“conEmu”,到目前为止,它一直很好用。

现在...这就是让我感到困惑的地方...:在我的 Windows 系统上,我还通过 mysgit 安装了 git。这给了我一个“gitBash”。在 gitBash 中,我可以使用 LINUX 命令,但不能使用 Windows DOS 命令。在 Windows 命令提示符中,我可以使用 DOS 命令,而不是 LINUX 命令。但是我只想在 Windows 中使用 LINUX 命令,所以(有人告诉我)Cygwin 是一个很好的选择?但是当我有 gitBash 时,为什么还要使用它呢?这有关系吗?我可以通过 gitBash/Cygwin 等 LINUXy 模拟器运行任何 Windows 命令吗?

您可以看到我在这里试图解开的结,我不确定它们是如何“契合”在一起的。

我的最终目标是能够简单地在我的 Windows 机器上使用 LINUX 命令,从命令行界面,如果可能的话,没有任何麻烦。我迷失在所有细节中。

谢谢。

答案1

如果您想按照您所说的去做,我建议您使用 CYGWIN。

安装程序非常成熟,可让您选择所需的命令和功能。默认设置几乎可以满足您的所有需求,您可以稍后进行扩展和调整。

首先,您需要了解终端和命令环境(又称“shell”)之间的区别。前者允许在低级别访问远程或本地系统,后者则是通过终端连接时运行的。这在所有系统中都是如此,只是在某些系统中隐藏得比其他系统更好。还值得注意的是,命令环境包含内置命令,例如 UNIXyls和 DOSy dir,但所有系统都有其他“命令行”工具,例如ifconfig在 Linux 和ipconfig.exeWindows 上。很难区分它们,但当您尝试在 Windows 上执行 UNIXy 命令时,有时会遇到麻烦。然而,许多最好的 UNIXy 命令行工具也可用于 Windows,无论是通过 CYGWIN 本身还是通过本机版本。例如,exiftool我在 Linux 和 Windows 上批量重命名照片时使用的出色工具。

因此,如果您需要的话,您可以用功能更齐全的程序替换该终端,比如 Mac 上的 Lterm2,即使 Windows 也有几个替代方案,但我个人不会这么做 - 麻烦多于价值。

在 Windows(无论如何都是较新的版本)上,默认的命令环境是cmd.exe。它远不如 Linux 中的功能丰富BASH。在 Linux 上,BASH 是最常见的标准,但你也可能会遇到其他标准,例如ASH、Korn ShellSH等。Windows 实际上提供了其他几个命令 shell,其中最常见和最强大的是 PowerShell。PowerShell 之所以如此强大,是因为它能够使用和公开大多数 .NET 库的接口,其中很多库可以做各种巧妙的事情。它也是 Microsoft 选择的管理 shell,因此你可以使用它来维护远程系统(服务器和客户端)甚至云服务,例如 Office 365 和 Azure。如果你想成为 Windows 系统 GURU,PowerShell 是必学的。

回到你的问题。你可以通过 CYGWIN 轻松运行 BASH,它会安装它和一些支持命令。CYGWIN 不仅为你提供了一种 UNIXy 方式来与 Windows 计算机上的驱动器、文件和文件夹进行交互,它还以类似的方式提供了 Windows 注册表之类的东西。

当然,还有其他限制。首先,Windows 上的文件夹布局始终与 Linux 或 MAC 主机不同,如果您希望它们在所有平台上都能工作,您必须在编写的任何脚本中考虑到这一点。

当然,您可以继续使用 gitBASH,但您可能会发现它没有您期望的一些命令。您必须尝试一下才能知道。如果您确实沿着这条路走下去,当您发现缺少的命令时,您可以在线搜索它,它可能作为本机 Windows 可执行文件可用,因此如果将其放在 PATH 上的文件夹中,应该可以从 gitBASH 中使用。

澄清 1:如果您习惯使用 Linux,那么您会熟悉这样一个事实:每个发行版都有一个“包管理器”,可帮助您从公认的(希望是)可信的来源安装软件。它们有助于确保您拥有所需的所有组件和依赖项。CYGWIN 使用其“安装程序”来实现相同的目的,尽管它要简单得多。请记住,大多数 Linux 工具都是为在 Linux 上使用而编译的(通常您需要知道您使用的处理器类型,并且需要来自 Linux“内核”的大量内部依赖项)。要在 Windows 上使用 Linux 命令,需要对它们全部进行重新编译以在 Windows 平台上运行。有一个帮助程序库可以使此操作相对轻松(MSYS?无论如何,您实际上不需要知道这一点)。

您说 Chocolatey 是 Windows 软件包管理器的尝试,这是正确的。Windows 的一大缺陷是缺乏单一、可信、公认的软件包来源 - 或者现在流行的“App Store”!在 W8 中,微软正在尝试(不得不说并不是那么好)纠正这个问题,但目前它非常有限 - 针对移动和 ModernUI 应用程序。

然而,许多 Windows 开发人员长期以来一直使用一种名为 NUGET 的工具来帮助打包应用程序以在 Windows 上安装。NUGET 在后台使用 PowerShell。Chocolately 是一组使用 PowerShell 和 NUGET 构建的脚本,用于帮助自动化安装。它运行良好,但仍然没有获得应有的广泛支持。为 Chocolatey 创建安装包很容易,我做到了我的第一次几周前,我为开源 Freeplane 思维导图工具撰写了一篇文章。

但是,正如您所说,Chocolatey(使用 PowerShell)和 CYGWIN 上的 BASH 之间没有任何联系。在您的示例中,您需要决定在哪里以及您想如何使用 VIM。如果您只想在 CYGWIN 环境中使用它,那么请通过 CYGWIN 安装程序安装它。但是,如果您想将其用作通用 Windows 编辑器,最好通过 Chocolatey 安装。不幸的是,没有简单的方法可以预测哪个最好。您甚至可能最终同时使用两者。另一方面,您可能会发现某些 Windows 应用程序在从 BASH 调用时也能正常工作,而其他应用程序则不能!!痛苦啊!

更新 2:我是否提到过您应该坚持使用 PowerShell?欢迎来到跨平台工作的世界。CYGWIN 希望安装自己的 Python 包以满足内部依赖关系。使用本机 Windows Python(例如通过 Chocolately 安装或手动安装)可能可以工作,但也可能不行。没有简单的方法可以判断,但如果您没有安装 Cygwin 包,您最终很可能会遇到问题。这就是为什么其他人建议使用虚拟机,这样您就可以保持干净和独立。

老实说,你最好接受你需要学习不同平台的不同工具。这并不难。这真的取决于你想做什么。如果你想学习 Linux 命令行,请使用虚拟机。如果你想自动执行 Windows 任务,请学习 PowerShell,或者,如果你已经了解 Python,请使用它!选择太多了!

相关内容