如果您对计算机上的终端模拟器非常熟悉,您可能听说过 Linuxist Bash 和 Microsoft 的 PowerShell。 这两种操作系统在专业人士的生活中无处不在。 然而,如果你不计划你的日常生活 Shell-命令提示符,您可能没有太多考虑两者的比较。 那么现在就是学习的最佳时机!
内容
什么是 PowerShell?
Microsoft 于 2006 年推出了 Powershell,作为在多功能且强大的脚本框架之上运行的命令行界面。 它旨在帮助 Windows 管理员可以创建使用“commandlet”(正式称为“cmdlet”)的小型应用程序来自动执行大部分工作。
更重要的是,它的命令结构和“脚本能力”代表了对旧 MS-DOS 的彻底改革 Windows 最初是建立在它的基础上的。 它具有更一致的语法和表示信息的方式,易于学习和编程。
这并不是要取代它 Windows 大多数人都习惯使用命令行,但添加了自己的自动化和配置功能。 例如,如果您尝试在 Cloud 要管理,您现在可以这样做 Connect-AzAccount
运行命令而不是使用远程桌面会话。
与 Bash 一样,PowerShell 是完全可审计的,并允许在非常敏感的环境中使用,在这些环境中了解系统中发生的一切非常重要。
顶部:以防万一您想知道:命令提示符和 Powershell 并不完全相同。 以下是命令提示符和 Powershell 之间的差异。
什么是bash?
Bash 是 1989 年的祖父,至今仍保持流行 Linux 尽管有任何更高级的 shell 试图超越它,但环境仍然如此。 与 PowerShell 类似,Bash 提供了一个可编写脚本的框架,可以更轻松地实现自动化管理。
因为它的命令结构和语法在各种命令中是普遍存在的 Linux 发行版、BSD,甚至 macOS,许多开发人员已经习惯使用 Bash 作为组织项目的焦点。
尽管 Bash 附带了一套基本操作,您可以使用它们来编写脚本并通过终端传递信息,但几乎所有可以与此一起使用的命令 Shell 在终端中输入一个单独的程序。 例如 Bash 不包括 ls
(列出文件)或 cat
(连接或显示文件的输出)命令,而是在指定路径中搜索具有相同名称的可执行文件。
Powershell 与 Bash:差异
当您第一次学习如何使用 PowerShell 和 Bash 时,它们可能看起来很相似,但本质上它们是截然不同的存在,有时设计理念是相互冲突的。 以下是使它们脱颖而出的一些非常重要的事情:
1. 用户访问控制
如果你想用 bash 做一些管理工作,你所要做的就是在你的命令前面加上以下前缀 sudo
。 命令执行后,您将立即被带回用户Shell。 运行 root 命令会减少出错的空间,并强制您验证您的工作。
另一方面,PowerShell 只能在管理员或用户模式下运行。 如果您想在它们之间切换,您需要打开一个新会话。 要以管理员模式打开PowerShell,需要右键单击程序图标,然后单击“以管理员身份运行”。 或者,您也可以简单地在终端会话中键入 Start-Process powershell -verb runAs
并且将召开具有管理权限的第二次会议。
第二版
当您在 Bash 中键入命令时,您实际上是在运行一个单独的程序,并且此可执行文件会为您提供所需的结果。 输出的格式取决于特定程序的开发人员希望如何对其进行格式化。
这里有很大的灵活性,这很好,但缺点是缺乏一致性。
PowerShell 中的命令输出通常根据单一一致的标准进行格式化。 您在屏幕上看到的文本是人类可读的数据版本,可以由其他程序解释。
这使得编写脚本和应用程序的用户只需使用PowerShell自己的函数和命令即可获取他们需要的所有信息。
3. 语法
Bash 使用非常独特的语法(例如 if [condition]; then code here; fi
),这在其他脚本语言中通常不存在。 使用起来并不是特别困难,但对于刚开始学习如何编写脚本的人来说可能有点不传统。
就用户命令而言,没有明确的统一性。 每个单独的程序都有自己的命令语法。 您需要知道如何使用它们,然后才能将它们集成到您的系统中 bash 脚本。
PowerShell 的脚本语法与任何其他 .NET 应用程序类似(例如 if (condition) { ...code here... }
)。 对于习惯在微软自己的生态系统中进行开发的人来说,几乎没有学习曲线。
用户命令遵循严格的结构:动词后跟连字符,然后是名词。 为了 example, Get-ChildItem
列出当前目录中的所有文件。 非特定于 PowerShell 的命令仍然可以遵循类似 bash 的结构。 如果您使用 Linux,您仍然可以运行所有这些 Linux 命令。
4:灵活性
如果您掌握了 Bash,您就知道如何使用多种终端环境 Linux 发行版、BSD 生态系统,甚至 macOS。 它是迄今为止的通用性之王。 尽管 macOS 在 2019 年转向了 zsh,但它的核心仍然是 bash 精神。
PowerShell 几乎可以在任何操作系统中运行,但主要是为了与 Microsoft 自有产品一起运行。 如果您使用它,您很可能会在 Windows。
如果你只学习 PowerShell 特定的约定,你基本上就会被困在微软产品的孤岛上。 虽然情况不一定是这样,但无可否认的事实是,只有在这种情况下,这个案例才真正闪耀。 然而,就其缺点而言,它占据了全球桌面市场很大一部分份额。
经常问的问题
我可以走路吗 bash 里面 Windows 和里面的PowerShell Linux?
跑步 bash 在 Windows 中只需安装它 Windows 子系统 Linux 以管理员身份运行命令提示符并键入以下内容 wsl --install
。 您可以立即访问 bash 安装后命令。
内部 PowerShell Linux 有点棘手,取决于分布。 微软 包括其网站上的说明 用于在最常见的发行版上安装 PowerShell。 你可能会注意到拱门 Linux 不存在于此列表中,但存在为 powershell
AUR 中的包。
我需要bash吗? Windows?
不一定,但如果你打算使用一些你更适合的东西,它会对你有很大帮助 Linux (Python、Git 等)。 和你在一起也没什么坏处。 使用 Windows 子系统 Linux 安装 bash 还可以为您提供完整的 Linux Shell 进行实验,如果您不熟悉操作环境,这是熟悉操作环境的好方法。
做 Windows DOS 命令可以在 PowerShell 中使用吗?
他们通常会这样做。 PowerShell 并不能替代原来的 PowerShell Windows 命令提示符。 相反,它是提供新功能的上一层。 如果您只是使用 PowerShell 而不是经过尝试和测试的 cmd.exe,您可能不会错过任何内容。
订阅我们的新闻!
我们的最新教程直接发送到您的收件箱
订阅所有时事通讯。
注册即表示您同意我们的隐私政策,并且欧洲用户同意数据传输政策。 我们不会分享您的信息,您可以随时取消订阅。
订阅