PowerShell 與 Bash:需要了解的主要區別

PowerShell 與 Bash:需要了解的主要區別

如果您對計算機上的終端仿真器稍有了解,您可能聽說過 Linux 的 Bash 和 Microsoft 的 PowerShell。這兩種操作系統在專業人士的生活中無處不在。但是,如果您的日常生活不是在 shell 提示符前進行的,那麼您可能沒有過多考慮兩者的比較。在這種情況下,現在正是學習的最佳時機!

什麼是 PowerShell

Microsoft 於 2006 年推出了 Powershell,充當在多功能且強大的腳本框架之上運行的命令行界面。它旨在幫助 Windows 管理員構建小型應用程序,利用“commandlet”(官方稱為“cmdlet”)來自動化大部分工作。

Powershellbash 列表

更重要的是,它的命令結構和“腳本能力”代表了對 Windows 最初構建於其之上的舊 MS-DOS 的徹底改造。它具有更統一的語法和呈現信息的方式,易於習慣和編碼。

這並不是要取代大多數人習慣運行的 Windows 命令行,而是通過其自己的自動化和配置功能對其進行補充。例如,如果您嘗試管理雲上的 Microsoft Azure 服務,您現在可以使用命令Connect-AzAccount而不是使用遠程桌面會話來完成此操作。

與 Bash 一樣,PowerShell 是完全可審計的,允許在非常敏感的環境中使用,在這些環境中,了解系統內發生的所有情況至關重要。

什麼是 Bash

Bash 是 1989 年的鼻祖,儘管有許多更高級的 shell試圖超越它,但它在 Linux 環境中仍然具有重要意義。與 PowerShell 非常相似,Bash 提供了一個框架,可以使用該框架編寫腳本以更輕鬆地實現自動化管理。

Powershellbash Bashls

由於它的命令結構和語法在各種 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,它就會打開具有管理權限的第二個會話。

2. 輸出

當您在 Bash 中鍵入命令時,您基本上是在運行一個單獨的程序,並且該可執行文件將為您提供您想要的結果。輸出的格式取決於該特定程序的開發人員希望其如何格式化。

這裡有很大的靈活性,這很好,但缺點是缺乏統一性。

PowerShell 中的命令輸出通常按照一種統一標准進行格式化。您在屏幕上看到的文本是人類可讀的數據版本,可以由其他程序解釋。

這使得編寫腳本和應用程序的人們只需使用 PowerShell 自己的功能和命令即可獲取他們需要的所有信息。

3. 語法

Bash 使用一種非常獨特的語法(例如,if [condition]; then code here; fi),這在其他腳本語言中通常不常見。使用起來並不是非常困難,但對於剛剛開始學習如何編寫腳本的人來說可能有點不傳統。

至於用戶命令,沒有明確的統一性。每個程序都有自己的命令語法。在將它們集成到 bash 腳本中之前,您必須知道如何使用它們。

PowerShell 的腳本語法與其他腳本語法類似。NET 應用程序(例如,if (condition) {. ..code here... })。對於習慣在微軟自己的生態系統中進行開發的人來說,幾乎沒有學習曲線。

用戶命令遵循嚴格的結構:動詞,後跟破折號,然後是名詞。例如,Get-ChildItem將列出當前目錄中的所有文件。非 PowerShell 特定的命令仍然可以遵循類似於 Bash 的結構。如果您在 Linux 上使用它,您仍然可以執行每個 Linux 命令。

4:靈活性

如果你掌握了 Bash,你就會知道如何在無數 Linux 發行版、BSD 生態系統、甚至 macOS 的終端環境中進行操作。它是迄今為止的通用性之王。儘管 macOS 在 2019 年改用了zsh,但它的核心仍然是 Bash 精神。

PowerShell 幾乎可以在任何操作系統中運行,但它主要是與 Microsoft 自家產品一起運行。如果您正在使用它,您很可能是在 Windows 中這樣做的。

如果您所學到的只是 PowerShell 特定的約定,那麼您實際上將被困在 Microsoft 產品的孤島上。儘管情況並非一定如此,但無法迴避的事實是,外殼只有在這種情況下才會真正發光。然而,就其缺點而言,它佔據了全球桌面市場的巨大份額。

經常問的問題

我可以在 Windows 中運行 bash 並在 Linux 中運行 PowerShell 嗎?

要在 Windows 中運行 bash,只需以管理員身份運行命令提示符並輸入即可安裝適用於 Linux 的 Windows 子系統wsl --install。安裝完成後,您將可以立即訪問 bash 命令。

Linux 中的 PowerShell 有點棘手並且依賴於發行版。Microsoft在其網站上提供了在最流行的發行版上安裝 PowerShell 的說明。您可能會注意到該列表中缺少 Arch Linux,但它作為powershellAUR 中的軟件包存在。

我需要在 Windows 中使用 Bash 嗎?

不一定,但如果您打算使用一些專為 Linux 設計的東西(Python、Git 等),它將對您有很大幫助。有它在身邊不會有什麼壞處。使用適用於 Linux 的 Windows 子系統安裝 Bash 還可以讓您擁有完整的 Linux shell 進行試驗,如果您不熟悉的話,這是介紹操作環境的好方法。

Windows DOS 命令可以在 PowerShell 中使用嗎?

他們通常會這樣做。PowerShell 並不是原始 Windows 命令提示符的替代品。相反,它是一個在其之上工作以提供新功能的層。如果您只使用 PowerShell 而不是久經考驗的 cmd.exe,您可能不會錯過任何事情。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *