本人前端兼PHP程序員。因為一直用的windows系統,並且一直在用git,我很喜歡用git-bash,但是幾乎不用windows的命令行(因為本人是程序員,而且因為上線測試等情況會經常使用linux,所以windows命令行的命令幾乎只知道幾個常見的),我就發現一個問題,git for windows本來只需要一個git的功能(當前可能還需要vim、ls之類和git相關的命令),但是git-bash卻做的像一個原生的windows命令行一樣這麼好用?那為什麼沒有人開發類似的軟體呢?就是在windows下運行linux常見命令的軟體。

PowerShell、windows的linux子系統和虛擬機都試過,但是感覺都不如git-bash好用。


題主說笑了,git bash 就是基於 msys 開發的,而 msys 就是題主說的 「為什麼沒人開發一個」 的這種東西。。。並且歷史上出現過不止一個這類解決方案。。。

順帶一提,聰明人早就不去裝什麼git bash了,裝一個msys2,然後pacman包管理,想裝git,想裝tig,隨意裝。

再順帶一提,聰明人也早就不玩什麼msys了,wsl真香,apt真爽。


WSL


看問題描述,需求大概是在Windows上運行GNU系列命令吧,基於UNIX模擬環境而建立起來的軟體有很多,僅列舉知名的幾個。

  1. Cygwin
  2. 核心基於Cygwin早期版本fork來的msys
  3. 不滿msys開發緩慢而另起爐竈的msys2

附相關介紹拙作

silaoA:Cygwin前傳:從割據到互補?

zhuanlan.zhihu.com圖標silaoA:Cygwin系列(一):Cygwin是什麼?

zhuanlan.zhihu.com圖標silaoA:Cygwin系列(三):盤點與Cygwin相似和相反的項目?

zhuanlan.zhihu.com圖標silaoA:微軟WSL——Linux桌面版未來之光?

zhuanlan.zhihu.com圖標

cyg-win瞭解一下,別說Linux下的命令了,連庫函數都帶了。

現在的Windows直接嵌入了Linux內核,Ubuntu,Debian隨便跑。


powershell覺得不好用的主要原因應該是.net的函數名背誦的不夠流利導致的。建議題主花點時間,多背誦幾個。

只要把IO先準備好了(這個powershell也替你準備了),然後嵌入C#寫linq,算起什麼來簡直不知道方便到哪裡去了,吊打各路bash,特別是當你regex和awk一起在命令行用的時候簡直想自殺。


又強行被「沒人」「為什麼」了,git-bash 就自帶了一個閹割版的 MSYS2,那換成完整版不就成了。


有個東西叫msys2

另外其實Windows下的命令行多個命令頻繁相互調用好像是比linux慢那麼一點點。。


已經有git-bash了為什麼還要再開發一個啊?


看了問題描述,我認為題主不滿足的不是 shell ,而是終端吧,如果你真的想得到一個好的體驗,我推薦 WSL + zsh + ohmyzsh 獲得良好的命令交互體驗

同時一個快捷,美觀的終端不僅可以提升效率還可以升華心情,windows 上比較實用美觀的終端下面網頁都有詳細介紹,選擇一款適合自己的,豈不樂乎

Dev on Windows with WSL?

spencerwoo.com圖標

裝wsl,然後你就能在powershell裏用所有Linux命令了

然後裝ConEmu,可以直接打powershell,也有自帶的連接到WSL的功能,有tab,可以設置透明度,字體渲染爆wsl和powershell自帶的終端一百條街,和Linux下幾乎體驗一樣


????這個問題是什麼時候發的?當時沒有 WSL 嗎?哦,問題後面說了 WSL ……

我記得其實 git-bash 是基於 cygwin/msys2 的一個環境封裝吧?

原則上說來 cygwin 和 wsl 其實用起來沒有本質區別,都是封裝了 Linux 的環境,之後都用了虛擬的一個 rootfs 目錄。只是 wsl 的那個窗口是 cmd 的不好用。我都是 wsl 開 sshd ,之後用 putty 連 ssh 用……


推薦試一下 MobaXterm,這個主要是 ssh telnet rdp 等遠程協議的客戶端,但是也集成了 bash busybox cygwin 等 gnu 工具,應該能滿足題主的需求。

因為有 bash 和 busybox,所以大部分常用的 linux 命令都支持,比如 ls less more awk sed grep 等。文件路徑也符合 linux 的習慣。比如 windows 的c盤,在 MobaXterm 裏就掛在 /drives/c 路徑下。

你還可以用 apt-cyg install 命令安裝 git svn vim 等開發工具。

但是有一個問題,在 MobaXterm 裏使用 git log 查看日誌的時候,默認的 git pager 是 busybox 提供的 less, 中文顯示有問題。你可以 apt-cyg install less 安轉一個獨立的 less.exe,然後 echo export GIT_PAGER="/bin/less.exe -RFXS" &>&> /etc/profile.d/git_env.sh 把 git pager 改成 /bin/less.exe


實在不知道你想要什麼,什麼「但是git-bash卻做的像一個原生的windows命令行一樣這麼好用?」反正我是沒讀懂

如果想要windows下學習linux,cygwin,但不如直接遠程linux伺服器了

如果想要命令行,直接powershell


有個東西叫cygwin https://www.cygwin.com/

cygwin是很多軟體的集合,通過重新編譯,把POSIX系統上的軟體移植到Windows上。

cygwin通過一套庫,實現了在Win系統下實現了POSIX系統調用的API。

有人說cygwin是閹割版的Windows下的Linux。但是cygwin也夠用了,因為它設計出來的用途我覺得就是在Win下使用部分類Linux的功能而已,而不是整個Linux系統。

實際上Windows下的git bash也是跨平臺編譯的,使用cygwin版本的git也是一樣的,而cygwin把諸多常用的工具做到一起,雖然不是完完全全的Linux(沒有需求也用不著),但是比wsl輕量、打開快,而且常用的工具git、ssh、vim也都是有的。


windows使用linux命令?除了bash幾個內嵌命令,其餘命令都是基於軟體的,比如wget,你是需要編譯一個windows能夠運行的wget命令。你在git bash下的所有命令,都是別人編譯好了的,而不是直接從linux下拷貝過來用。你說沒人開發,那git-bash是什麼?你是覺得git bash哪裡不好用害死啥的


最近幾周安裝了Windows下Linux子系統,類似於軟體了。很多Linux特有軟體都可以在上頭運行。只是缺少Linux系統的視覺美感


你使用的命令只有極少數是命令行軟體(終端 Shell)內建的。

其實它們都是獨立的程序。是一個個 App 而非 Shell 自帶的參數。

也就是說,想讓 Windows 命令行執行 Linux 下的命令,得重新實現大量的常用 CLI 工具。這早就超出了所謂命令行軟體的範疇。


推薦閱讀:
相關文章