1. 程式人生 > >Gitbash如何支援互動式命令?如何讓gitbash的命令不亂碼?winpty是什麼鬼?幹嘛用的?

Gitbash如何支援互動式命令?如何讓gitbash的命令不亂碼?winpty是什麼鬼?幹嘛用的?

 winpty 是一個 Windows 軟體包,提供了類似 Unix pty-master 一樣的介面,用於實現控制檯程式之間的通訊。該軟體包包括一個開發庫 (libwinpty) 和一個用於 ygwin 和 MSYS 的工具用於在 Cygwin/MSYS pty 下執行 Windows 控制檯程式。

MSYS: Minimal GNU(POSIX)system on Windows,是一個小型的GNU環境,包括基本的bash,make等等。與Cygwin大致相當。
GNU是一個自由的作業系統,其內容軟體完全以GPL方式釋出。這個作業系統是GNU計劃的主要目標,名稱來自GNU's Not Unix!的遞迴縮寫,因為GNU的設計類似Unix,但它不包含具著作權的Unix程式碼

 Gitbash左上角的MINGW64是什麼鬼?

MinGW(Minimalist GNU for Windows),又稱mingw32,是將GCC編譯器和GNU Binutils移植到Win32平臺下的產物,包括一系列標頭檔案(Win32API)、庫和可執行檔案。

另有可用於產生32位及64位Windows可執行檔案的MinGW-w64專案,是從原本MinGW產生的分支[1]。如今已經獨立發展[
MinGW是從Cygwin(1.3.3版)基礎上發展而來

Cygwin是許多自由軟體的集合,最初由Cygnus Solutions開發,用於各種版本的Microsoft Windows上,執行類UNIX系統。Cygwin的主要目的是通過重新編譯,將POSIX系統(例如Linux、BSD,以及其他Unix系統)上的軟體移植到Windows上

什麼是mintty?

mintty是一個免費的開源終端模擬器,用於Cygwin,類似Unix的Windows環境。它具有本機Windows使用者介面,不需要顯示伺服器;它的終端模擬旨在與xterm相容。 Mintty基於PuTTY的終端模擬和Windows前端部分,但在很多方面對它們進行了改進,特別是在xterm相容性方面。

 新版 Git for Windows 用的是 mintty 終端

1. 不支援本機互動式應用程式,需要安裝 winpty ( Git Bash 已自帶)

如下互動式命令不工作:

 

需要使用以下命令:

2. 當 Options 裡 Text 選項卡中的 Character set 設定為 UTF-8 ,這樣可以正常識別 utf8 相關的檔案,   這樣設定後,在 Mintty 視窗下執行一些 Win 上的命令時會出現亂碼(比如 ping, ipconfig 等)

針對這些命令,使用 winpty 進行字元流轉換。具體是先安裝 winpty ( Git Bash 已自帶),然後使用 winpty 執行這類命令($ winpty ping www.baidu.com )即可正常顯示中文。