我是一个Mac的家伙谁是使用Mac的终端。我现在使用Windows。
- 这些CLI选项之间有什么区别?
- 我什么时候应该使用一个超过另一个?
- 是否有更多我应该考虑的CLI选项?
- 如果你是一个尝试适应Windows的Mac用户,你会使用什么CLI?
我尝试使用Windows的原因是,我想确保我的Docker项目的CLI适用于Windows用户,我可以将来自容器的文件写入Windows,并确保我的README文件具有Windows用户的说明。基本上我也在Windows上测试我所做的一切,比如Python。
3条答案
按热度按时间ih99xse11#
Git bash是
bash
,这是IIRC也是MacOS上的默认shell。它不是Windows上的默认shell,尽管存在几种实现(CygWin,MinGW,...)。除了
bash
之外,Git还捆绑了许多POSIX(UNIX/Linux/etc.)实用程序;为了避免与类似命名的Windows命令“冲突”,最常见的安装选项是以这样的方式安装bash
,即其他POSIX命令仅在运行bash
时可用。Git安装程序将创建一个快捷方式来启动这个“私有”版本的bash
,因此是“git bash”。Windows命令提示符运行默认的Windows shell CMD. EXE,它是旧的MS-DOS命令shell COMMAND. COM的衍生物。它比大多数POSIX shell功能要弱得多;例如,直到最近它才支持if/then/else结构,并且它不支持shell函数或别名(尽管有一些解决这些限制的方法)。
PowerShell更像是一个脚本环境。我将它与UNIX/Linux系统上的Perl进行比较--比标准shell强大得多,但不一定是我想在命令行中使用的东西。
需要注意的一件事是,一些更好的PowerShell功能可能需要您更新PowerShell版本-与Windows捆绑的版本通常是几年前的版本。更新PowerShell通常需要管理员权限;根据版本的不同,您可能还需要更新.NET Framework。
如果我是一个试图适应Windows的Mac用户...看情况在短期内,使用像
bash
这样熟悉的东西会更容易。但从长远来看,你--更重要的是,你的潜在用户--可能不想依赖第三方工具,特别是对于Windows用户来说,这通常会带来额外的学习曲线。当你想用它的时候...这实际上取决于您试图实现的目标--无论是技术功能还是您希望呈现给用户的界面。如上所述,我认为PowerShell比CLI更适合脚本,除非您只需要运行一个JavaScript(内置或您自己创建的)。
3qpi33ja2#
这是shell之间的一些差异的高级概述,而不是逐个功能的比较。
CMD
(命令提示符)和PowerShell
都是Windows的shell。CMD.exe
是从COMMAND.COM
派生而来的,而COMMAND.COM
本身又是从MS-DOS
派生而来的,它有一些逻辑结构,可以运行程序,处理输出,以及执行您期望从shell中执行的大多数基本任务。它通常被认为是非常有限的,基于其他shell可以做什么,但不是不能,如果你知道如何使用它。然而,它从来没有真正的“设计”,新功能在没有明确路线图的情况下被添加。Powershell
是一个从头开始设计的shell,它与.NET有联系,并且内置了更多的现代语言结构。微软设计了Powershell作为CMD.exe
和批处理脚本的替代品,尽管CMD
远未被弃用。Powershell
可以直接调用.NET类,在本机使用XML对象,并具有内置的远程处理功能。与批处理脚本相比,它更类似于编程或脚本语言。目前围绕Powershell
的社区比批处理脚本强大得多,通常建议使用Powershell
编写新代码,而不是继续使用批处理(CMD
)脚本。Powershell
一开始确实感觉像CMD
。您可以在其中运行程序并处理其输出,在大多数情况下,无论是从Powershell
还是从CMD
运行程序,其行为都完全相同。但是,您很快就会注意到一些差异-并非所有变量都被视为环境变量,变量都以$
为前缀,而不是 Package 在%
中,并且Powershell
管道比CMD
管道强大得多。Powershell
也是完全面向对象的,这与大多数其他主要基于文本的shell语言相比是独一无二的。You can read more here关于为什么
Powershell
比批处理脚本更值得推荐,关于CMD.exe
和批处理文件也有很多历史。Git Bash
与您在Linux和MacOS上使用的bash
shell相同,但针对Windows编译。它的前缀是Git
,其名称表明它是与Git for Windows一起安装的,git
和各种 *nix实用程序的打包,为Windows编译,用于git。您可以在其中运行sh
和bash
脚本,以及调用随其安装的Unix程序。Unix实用程序通常也可以在
CMD
或PowerShell
中运行,但默认情况下,安装程序不会将这些实用程序添加到SYSTEM或USERPATH
中,以免潜在地覆盖用户可能在其他上下文中使用的相同实用程序。基本上,它将Git Bash
安装的实用程序隔离到Git Bash
。除了
git
自动化之外,我不建议将Git Bash
本身用于任何与生产相关的事情,在这种情况下,您可能更愿意自己管理cygwin
、msys2
或其他Unix兼容层的安装。但是在开发过程中,它可以是一个方便的shell,尽管这些天我通常更喜欢PowerShell
而不是bash
来编写Windows脚本。rryofs0p3#
我是一个长期的Windows用户。Windows API和Windows命令 shell 和VB脚本对我来说很自然。您希望为Docker项目的使用提供原生Windows体验。
使用WSL。
Docker项目的Windows用户使用WSL。(Windows系统Linux)。总有例外,但大多数Windows Docker用户首先是Docker用户,他们希望Docker能够轻松工作,并使用Windows子系统。