![Windows PowerShell 和 Unix/Linux 的終端機一樣強大嗎?](https://rvso.com/image/1395271/Windows%20PowerShell%20%E5%92%8C%20Unix%2FLinux%20%E7%9A%84%E7%B5%82%E7%AB%AF%E6%A9%9F%E4%B8%80%E6%A8%A3%E5%BC%B7%E5%A4%A7%E5%97%8E%EF%BC%9F%20.png)
是Windows電源外殼與 Linux 一樣強大和高效terminal
?
線下的人告訴我,Windows PowerShell 是為了讓 Unix 管理員更舒服地使用 Windows,但沒有做太多解釋。但我想,只有當它具有(或幾乎)相同的效率時,他們才會感到舒適。
答案1
好吧,您的第一個問題是您正在將 shell (PowerShell) 與終端進行比較。在 Linux 中,終端是發送和接收基於字元的 I/O 的東西,並且假定其背後有一個互動式使用者(換句話說,它是用於執行操作的 GUI 應用程式)包含如地獄)。最常見的 shell 之一運行之內Ubuntu 的終端機是重擊,但還有其他的。
線下的人告訴我,Windows PowerShell 是為了讓 Unix 管理員更舒服地使用 Windows,但沒有做太多解釋。
確實,正確的說法是 PowerShell 是 Windows 公開的大部分功能WMI,通訊和。互動式和可編寫腳本的命令列環境中的物件模型 - 並且此命令列環境繼續借用 Unix shell 中的許多概念 - 例如管道和 I/O 重定向,就像舊的 DOS(2.0 及更高版本command.com
)cmd.exe
一樣。管道與 PowerShell 中的物件一起使用。您可以執行諸如創建 HTML 之類的操作Excel如果您了解得足夠多,可以即時使用電子表格。這當然是舊外殼的升級/替換cmd.exe
,與舊外殼相比沒有太大變化視窗NT4.0。
關於語法,它不太像 Unix shell(儘管最終沒有一個 cmdlet 用作/
開關或參數指示符),但經典 Unix 命令有許多別名 - 例如ls
在 PowerShell 視窗中輸入將像dir
.但這些只是別名(“Get-Alias”列出了這些?)。
關於 PowerShell 的功能,您確實具有類似的功能,以僅腳本化的方式,來自VB腳本和C腳本- 儘管這兩者都早於.NET。
Unix 使用者在大多數時間使用 Bash 時不必做的一件事是密切熟悉程式設計師或物件可能非常複雜的物件模型,這是許多進階且簡單的 PowerShell 任務所必需的。但這是唯一可能的,因為對於許多標準來說,直接文字輸出有明確的約定POSIX命令。 Windows 沒有這種傳統 - 它似乎更喜歡使用mmc
控制台來執行管理任務,多年來到處添加命令。此外,許多著名的 Unix 實用程式都很複雜,在使用之前需要進行一些研究 -rsync
,wget
,以及許多其他人。效率可能取決於一個人對他們所使用的工具的了解程度,而不是其他任何因素。
答案2
Windows PowerShell 和 Unix shell 是兩種不同的東西,各有優點。
Unix(shell)有一個哲學:一切都是文件。 Unix 命令的輸入和輸出可以像檔案一樣存取。這使得連結命令變得非常簡單,並且由另一個命令重複使用一個命令的輸出是 Unix shell 的強大功能。
據我所知,對於 Windows PowerShell,一切都是物件。您可以將命令的結果作為物件傳遞給另一個命令。這確實很強大,但它沒有Unix的簡單概念。
我不認為 PowerShell 與 Unix shell 一樣高效,但其他人認為如此。
但這種比較是沒有意義的,因為 Windows 不是 *nix 系統,因此 *nix 概念不適用。相比作業系統,PowerShell是一個很大的改進。