網站首頁 編程語言 正文
前言
計算機啊這東西,本質上是硬件和軟件的綜合體。如果只有硬件沒有軟件的話,這也是臺辣雞而已。而計算機軟件中最靠近硬件的一層,就是操作系統層。
操作系統有很多種,比如Unix/Linux/Mac OS/Windows幾種。其中,我們接觸的第一款操作系統應該就是微軟(巨硬)公司的windows系列了。這款操作系統從1985年發表第一款操作系統Windows1.0開始,到現在已經有將近40年的歷史了。所以Windows內部也一定存在很多祖傳的應用,比如Windows NT、掃雷、cmd等。
雖然Windows是一款以視窗為主要交互模式的操作系統,但是對于一個腳本佬,命令行同樣重要。甚至有時命令行的交互效率比視窗的點點點更高,也更快捷方便(就比如我剛開始使用linux的shell的時候,對此非常抗拒,覺得十分難用;但是用久了就回不去了,現在整天罵Windows,為啥設計得如此不透明)。
當然啦,腳本佬畢竟是少數,大部分人還是覺得Windows的點點點更加符合自己的使用習慣。然而作為一個腳本佬,就沒辦法再擱那兒點點點了,這樣難免被人說lowbi。于是我簡單地看了一下Windows的命令行,發現有兩種--黑框的cmd和籃框的powershell。那本文主要討論這二者的異同。
cmd vs powershell
我呢,是個土包子,看到這二者的第一感覺就是,powershell是加強版的cmd。這句話說了等于沒說,因為的確如此。如果這個問題是個面試題,你要這么答,很難保證面試官不會繼續問下去,“請詳細講講,這二者有啥異同”?這時候就喝喝了,你就沒話可講了,最后就得被迫回家等消息。那我們這里不廢話,直接上表格:
cmd | powershell | |
---|---|---|
框框顏色 | 黑色 | 藍色 |
起用時間 | 1981年 | 2006年 |
適用性 | 僅支持cmd腳本(bat,cmd) | 支持cmd腳本(bat,cmd)和powershell腳本(ps1) |
擴展性 | 僅支持cmd內置函數 | 支持cmd內置函數+powershell cmdlet |
命令別名 | 不支持 | 支持 |
輸出內容類型 | 對象 | 文本 |
程序并發 | 支持 | 不支持 |
是否有ISE(編譯器) | 有,而且能直接調試 | 無,只有命令行 |
是否支持.net庫 | 是 | 否 |
是否支持WMI(監控工具) | 是 | 否 |
是否可以管理微軟云資源 | 是 | 否 |
是否支持shell | 是 | 否 |
是否可以運行所有類型程序 | 是 | 否 |
總結
上面我總結了powershell和cmd的異同點,可以從中看到powershell是cmd的加強版,但是加強得過了頭,基本上也可以作為Windows不同世代,實現命令行交互的兩種方式了。其中cmd能做的事情powershell都能做,而powershell除了兼容cmd以外,也增加了幾項對腳本佬更加友善的改進:
- 增加了cmdlet,使得很多功能可以像成熟的編程語言一樣直接調用。
- 拉進了與linux shell的操作距離,使得學習成本大大降低。
- 支持了很多更友善的功能,比如ISE和WMI,操作感比cmd更先進。
- 增加了操作其他語言的便捷性,使得powershell通用性更好。
- 增加了管理其余基礎資源的功能,使得我們使用vagrant或者terraform時更方便。
- 由于powershell本身建立在.net框架之上,所以直接可以調用,net相關功能,對于.net開發者是一種福音。
總之,它給了常年使用linux命令行方式進行作業的人(比如我這腳本佬)更好的信心去使用windows進行編程和測試,其強大的功能也令我嘆為觀止。只能說I need more 拋瓦燒,微軟巨硬,魔獸該出新資料片啦!
原文鏈接:https://www.cnblogs.com/young233/p/16549319.html
相關推薦
- 2022-03-23 CentOS7防火墻和端口相關命令介紹_Linux
- 2023-10-11 記錄Mybatis-Plus inSql用法
- 2023-01-30 React合成事件及Test?Utilities在Facebook內部進行測試_React
- 2022-06-12 IDEA如何配置Tomcat
- 2022-09-03 Go語言函數的延遲調用(Deferred?Code)詳解_Golang
- 2022-07-20 react中事件處理與柯里化的實現_React
- 2022-09-26 go使用makefile腳本編譯應用的方法小結_Golang
- 2022-04-11 一文帶你了解什么是瀏覽器緩存,DNS,CDN及域名解析類型_網站運營
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支