為什麼 Windows 的命令行這麼難用?

windows的命令行為什麼會這麼難用,為什麼Microsoft不在這方面借鑒一些Linux強大的地方,加強一點點


Linux是在命令行上面做了個圖形界面,Windows是在圖形界面里順便帶了個命令行。


因為他們覺得powershell比起批處理那種反人類的語言已經有了巨大的進步啊。。。開玩笑。。。

unix - Is PowerShell ready to replace my cygwin shell on Windows?

最高票數的回答者是powershell的開發者。。。。

我覺得很贊。。。。


powershell當年第一時間就去嘗試了,主要是字體太丑不能忍……


在 1980 年代人們的觀點是:GUI 要統治世界命令行去死去死,那個時候出的 OS 命令行都是大幅削弱的。Win16 甚至沒有控制台,95 和 NT 的控制台(Term,或者說 CSRSS)完全是給兼容 DOS 設計的,甚至還能兼容 DOS 的寫屏中斷。Powershell 設計已經很晚了,當然架構設計的比 *nix Shell 要好一些,無奈被 CSRSS 坑。

現在 CLI 回潮是 Linux 乾的「好事」,背後則是 90 年代末期傳統伺服器廠商斗 M$ 的歷史。


也不算太難用吧,完成基本操作也沒有什麼問題啊,想當年DOS可是最流行的操作系統哦。

後來的windows,命令行已不是其中心了,就不用投入過多了。而linux呢,主要市場在伺服器和嵌入式設備上,一般沒有GUI,當然很重視命令行,而且linux搭配的bash和busybox等都是無數shell中最優秀的,當然要好用。

在windows,若您覺得bat不好寫,可以寫vbscript或jscript,也可以安裝其他環境去完成您的工作便是。在這裡抱怨,微軟也不會給你bash一樣的bat的。

另外PowerShell是不是改進了不少啊?


在程序猿中比較喜歡 Windows 命令行的我也算異類了,跑來討論下這個問題。

首先定義 Windows 的命令行,在2017年的現在,需要明確接下來討論的是 Windows 10 上的 Powershell 及其終端界面。CMD的唯一存在價值是為了兼容所以排除。還有一眾 Terminal Emulator,舊的有 cmder, ConEmu, Mintty,新一代的有 Hyper 以及 Upterm (舊稱 Black Screen)等,這些展開就扯太遠,有興趣的同學自會去看看,個人還是喜歡原生終端,除非遇到不可調和的問題,比如最近正在研究的多屏支持,也可能有變。

Windows 的命令行是否難用?以我個人的經驗,對比於 Ubuntu 的 bash,以及 macOS 的 Terminal 來說,差得不多,如果牽扯到寫腳本,無論 .sh 還是 .ps1 都要慢慢來。在終端配置上,也都遇到過各種各樣的麻煩。很多人包括題主覺得 Windows 的命令行難用,我也確實能想出幾個非常難用的點,以及我所使用的一些解決方案,比如:

1、丑

前排的同學別笑,在我看來一個軟體的好用程度是包括美觀程度的,就像小學自然課提到某種動植物的觀賞價值,我會想觀賞價值算毛價值。可是當你在4k屏上打開終端,看到的是如下界面:

真的能忍?所以引入了這個問題:為什麼 Windows 的終端(如命令提示符、PowerShell)都這麼丑? 但正如該問題下的 @Tim Chen 所言,諸多影響美觀的要素都能改啊。於是一票群眾幡然醒悟,前往修改,接下來他們又提了這樣的問題:為什麼 Windows 下 cmd 和 PowerShell 不能方便地自定義字體? 這才算見識了另一個難用的地方:

2、難配置

難配置這一點微軟是承認的,他們寫了相關文章來幫助大家理解:Understanding Windows Console Host Settings ,並在該文章末尾提到他們也在寫一個工具來更方便的對終端進行配置。在那之前,我個人對 Window 終端配置的管理方法是這樣的:

首先我仿照 Visual Studio Code 的配置文件寫了一份 Windows 終端的配置文件:https://github.com/Elderry/config/blob/master/Settings%20-%20Windows%20Console.json ,以更符合人類直覺的方式列出所有我需要配置的屬性,比如配色方案,折行方式,游標樣式等等。其次是一個 Powershell 腳本文件:Config - Windows Console ,兩個文件放到一個目錄內,跑完這個腳本之後,相關的配置會被寫入終端的默認配置,並根據此配置生成快捷方式到我所需要的目錄里。因為 Windows 終端的配置是與快捷方式綁定的,所以每次改動配置需要重新生成一遍快捷方式。接下來提下配置的兩個關鍵點:

2.1 字體

字體的問題實在很難過,我之前使用 Consolas,缺點是沒法搞中文。後來找到了 @Belleve 同學的 Inziu Iosevka,在中文環境以及高分屏上表現十分良好,就是過於細長需要適應一段時間。

2.2 編碼

我現在的編碼是 936,也就是 GB2312,我倒是很想改成 65001 也就是 UTF-8,但是每當我試圖那麼做的時候就會出現如下的慘劇:(實際輸入為 「很不好」)

如圖,字被砍掉一半,現在尚不清楚是誰的鍋,可能是 PSReadLine。

3、沒有tab,沒有屏幕切分

這兩項算是比較現代一些的功能了,沒有倒是也能忍,終歸不那麼方便就是了,macOS 上的 Terminal 也沒有屏幕切分,以至於公司其他人都跑去用 iTerm2。

4、啟動太慢

上圖中我的 profile 載入就花了半秒,實際體驗需要2秒左右,這一點 @叛逆者 在另一個問題下提到過,並且短期內看不到解決的可能性。

目前本人就想出來這4點,在本問題下還有一些其他人提的問題多是不夠了解最新版 Windows 終端或 Powershell 或 WSL 所致:比如

  1. @孫竟 提到的複製粘貼不好用,因為沒提到究竟如何不好用,我只能推測是舊版終端的一些確實比較奇葩的設置導致,而這些在16年的一次更新中做了很大改進,具體見:What#x27;s New in the Windows Console in Windows Server 2016 Technical Preview 。
  2. @gentoofly 提到的高亮與命令補齊在 Powershell 中均存在,sed 及 grep 這些命令通過 WSL 也可以視為已經支持,某些linux命令甚至可以通過 bash -c 的方式直接在 Powershell 里通過函數的方式調用。

以上,希望有所幫助。


謝邀

你為什麼覺得難用?DOS Shell已經有了管道了,也能重定向標準輸入輸出,也有File Name Globbing,這不解決了99%的需求了嗎?具體的命令的參數豐富程度是由命令程序的設計決定的,這和系統無關

如果你覺得DOS Shell功能不夠豐富,你還可以用Power Shell、Cygwin + 任何一種UNIX Shell。你可以寫Python、Perl、JScript腳本自動化,甚至你可以自己開發一個Shell

系統是機制層。系統不阻礙你實現自己的上層應用就是合格的


一個專註核心,一個專註」用戶體驗「!!!

方向不同,所以windows 命令行難用,powershell我也覺得不習慣!


因為99%的windows用戶都不需要使用命令來操作,所以MS幾乎沒有在命令行有所作用。比如,沒有各種顏色的顯示,沒有命令補齊功能。沒有Linux下強大的grep過濾命令,流編輯命令sed,awk等。


用下powershell又不會懷孕=。=


因為Windows的命令行和圖形界面分離嚴重。


那是因為你不熟...


試試 ConEmu 吧,挺好的,這樣我就不覺得CMD難用了,該乾的事都能幹。

PS:目前我使用的是 cmder 這個東東集成了一些linux命令幾個工具的結合。


如果只是「一點點」的話,powershell就是啊。。。


推薦閱讀:

玉兔號的 SPACEos 操作系統,系統架構是怎麼設計的?
為什麼梁海先生不推薦在 Windows 上使用 MacType?
重視版權的知乎用戶有多少用正版 Windows 的?
關於windows下的路由表項的解釋?
如何在windows下打開 pages?

TAG:MicrosoftWindows | Linux | 計算機 | 終端命令 |