天天看點

Cygwin使用方法



Cygwin使用方法

學習心得 2009-11-25 13:21:13 閱讀1327 評論0 字号:大中小

對于 UNIX 本身,也有各種稱呼。IBM® 大型機使用者說各種帶字母 “z” 的行話,比如 IBM z/OS® 和 System z9 Virtual Machine (z/VM);嵌套系統開發人員使用 eCos 這個詞;在聊天中還會提到其他許多風格的 UNIX,比如 Linux®、FreeBSD、Sun Solaris 和 Mac OS X。現代資訊技術使用各種各樣的方言,簡直就像是聖經中巴别塔的故事。

當然,也有不少人說 Windows 術語,盡管大多數人隻掌握 “指向和單擊” 這樣的簡單詞彙。經過 20 年的發展,大多數 Windows 使用者已經忘了古老的 DOS 術語。

但是,與 UNIX shell 相比,Windows COMMAND實用程式的功能實在很差;是以,UNIX 使用者通常認為 Windows 是一種讓人灰心喪氣的平台。對于習慣于使用豐富的指令行工具集的 UNIX 軟體開發人員來說,Windows 尤其别扭。對于 UNIX 開發人員來說,使用 Windows 簡直就像是到了陌生的外國。

幸運的是,Cygwin(見 參考資料)在 Windows 環境中提供大家熟悉的一片天地,就像是美國人在法國找到了麥當勞。

Cygwin 是一個用于 Windows 的類 UNIX shell 環境。 它由兩個元件組成:一個 UNIX API 庫,它模拟 UNIX 作業系統提供的許多特性;以及 Bash shell 的改寫版本和許多 UNIX 實用程式,它們提供大家熟悉的 UNIX 指令行界面。前一個元件是一個 Windows 動态連結庫 (DLL)。後一個元件是一組基于 Cygwin DLL 的程式,其中許多是用未經修改的 UNIX 源代碼編譯的。它們合在一起提供大家熟悉的 UNIX 環境。

這篇文章我們要安裝 Cygwin,讨論它的指令行界面 (CLI),并建構标準 Cygwin 發行版中未包含的開放源碼,以此體會把 UNIX 應用程式(至少是一部分 UNIX 應用程式)遷移到這個模拟環境是多麼容易。

安裝 Cygwin

與這裡介紹的其他軟體不同,Cygwin 使用 Windows 安裝程式。Cygwin setup.exe 檔案可以重新安裝軟體,可以添加、修改或更新 Cygwin 配置的元件。

在 Windows 系統上打開浏覽器,通過通路 http://cygwin.com/setup.exe 下載下傳 Cygwin 安裝程式。安裝程式本身非常小(大約 600KB),因為大多數 Cygwin 軟體是在安裝過程中下載下傳的。完成下載下傳之後,按照以下步驟安裝 Cygwin:

  1. 運作安裝程式。圖 1 顯示 Cygwin 歡迎螢幕。

    圖 1. 在安裝 Cygwin 期間出現的第一個對話框

    Cygwin使用方法
  2. 單擊 Next 進入下一個螢幕,選擇要執行的安裝類型。
  3. 單擊 Install from Internet。
  4. 單擊 Next,然後選擇一個安裝目錄。

配置安裝的視窗見圖 2。

圖 2. Cygwin 安裝選項

Cygwin使用方法
在大多數情況下,推薦的安裝選項是合适的,也可以進行定制,但是要注意幾點:
  • 不要在 Windows 系統的根目錄(比如 C:)中安裝 Cygwin。最好把 Cygwin 安裝在它自己的子目錄中,比如預設目錄(C:\cygwin)或 C:\Program Files\cygwin。(您選擇的目标目錄将成為模拟的 UNIX 環境的根目錄/。例如,如果在 C:\cygwin 中安裝,那麼虛拟的 /usr/bin 實際上是 C:\cygwin\usr\bin)。
  • 對于 Install For 選項,不要選擇 Just Me。
  • 把 Default Text File 類型設定為 Unix,進而盡可能提高與其他 UNIX 機器上存儲的現有檔案的相容性。

         5. 單擊Next。

在下一個視窗中,選擇一個存儲 Cygwin 所需的資料的目錄。不要選擇前一步中選擇的 Cygwin 目錄。 如果可能的話,應該在有至少 1GB 空閑空間的驅動器上建立或選擇一個目錄。

          6. 再次單擊 Next,選擇使用的 Internet 連接配接類型。通常應該選擇 Direct Connection。

          7. 再次單擊 Next。

稍等一會兒,Cygwin 會下載下傳目前的鏡像站點清單,讓您選擇一個鏡像站點,見圖 3。如果不确定應該選擇哪個站點,就選擇地理位置比較近的站點。

圖 3. 選擇您認為可靠的或地理位置比較近的安裝站點

Cygwin使用方法

經過短暫的延遲之後,安裝程式顯示可用的類别和包的完整清單。圖 4 顯示一個類别的部分内容。單擊加号 (+) 展開對應的類别;單擊 “循環” 标志在 Skip(忽略此包)和包的所有可用版本之間循環。如果 Cygwin 提供一個實用程式的多個版本,應該選擇滿足您的需求的執行個體。順便說一下,如果選擇 B 列,就會下載下傳二進制包;選擇 S,也會下載下傳源代碼。

圖 4. 選擇最适合需要的包和執行個體

Cygwin使用方法

在 Cygwin 中可用的包超過 1,000 個,是以應該隻選擇您需要的類别和包。(安裝所有 Cygwin 包會占用超過 800MB 的磁盤空間)。以後随時可以添加整個類别或單獨的包:隻需重新運作 Cygwin 安裝程式。(還可以在任何時候用相同的安裝程式删除或更新包)。搜尋 Cygwin 包清單(參見 參考資料),檢查您喜歡的 UNIX 實用程式是否在 Cygwin 中可用。

8. 選擇您需要的工具之後,單擊 Next,下載下傳過程開始!

進度條分别反映每個包的下載下傳進度、總下載下傳進度和磁盤使用量。圖 5 是在我的測試計算機上在安裝期間截取的螢幕圖。

圖 5. Cygwin 下載下傳大量軟體,是以請耐心等待

Cygwin使用方法

最後,安裝程式安裝軟體并(可選地)在 Start 菜單和桌面中添加快捷方式。單擊 Finish

9. 通過使用 Start 菜單或輕按兩下 Cygwin 圖示(如果添加了這些快捷方式的話),啟動 Cygwin;也可以執行 Cygwin 目錄中的 Cygwin 腳本(比如 C:\cygwin\Cygwin.bat)。

圖 6 顯示第一次啟動 Cygwin 時的情況:它建立您的主目錄,執行 shell 啟動檔案,顯示提示。現在可以運作 UNIX 指令了!

圖 6. 現在可以在 Windows 中使用 UNIX 指令了!

Cygwin使用方法

例如,試一下 ls -a或 type touch。後一個指令表明 touch是可執行檔案 /usr/bin/touch。

在 Windows 中發揮 UNIX 的優勢(反之亦然)

Cygwin 在 Windows 中幾乎完整地模拟一個 UNIX shell。實際上,它把這兩種作業系統很好地結合在一起了。例如,可以運作 df -h指令顯示 “UNIX” 機器上的空閑磁盤空間。圖 7 顯示結果。

圖 7. 是 Windows 上的 UNIX 檔案系統,還是 UNIX 上的 Windows 檔案系統?

Cygwin使用方法

正如前面提到的,Cygwin 安裝目錄作為虛拟 UNIX 系統的根目錄。Cygwin 把安裝目錄中的子目錄映射到 UNIX 目錄。它以單獨的卷的形式提供 Windows 驅動器,比如 /cygwin/c。可以使用這樣的虛拟路徑啟動 Windows 程式。請嘗試輸入

/cygwin/c/Program\ Files/Internet\ Explorer/IEXPLORE.EXE

從指令行啟動 Windows Internet Explorer®。(還可以使用 Tab 鍵自動展開路徑的元素)。

順便說一句,如果要把 Windows 路徑名轉換為等效的 UNIX 路徑名或者相反,可以試試内置指令

cygpath。在預設情況下,cygpath産生 UNIX 路徑名。使用-w選項産生 Windows 路徑。

$ cygpath -w /cygwin/c/Program\ Files/Internet\  Explorer/IEXPLORE.EXE c:\Program Files\Internet Explorer\IEXPLORE.EXE

還有幫助溝通這兩個環境的其他特性:

  • Cygwin 提供它自己的 lpr(/usr/bin/lpr 而不是 Windows 的 LPR.EXE),可以直接從模拟的 UNIX 環境進行列印。隻需把 PRINTER 環境變量設定為 \\server\printer_name 或 //server/printer_name 這樣的 Cygwin UNC;前向斜杠和反向斜杠都可以,在 Cygwin 中的其他地方也是如此。
  • 在 Cygwin 中用 ln -s建立的符号連結在 Windows 中被解釋為快捷方式。同樣,Windows 快捷方式在 Cygwin 中被解釋為符号連結。是以,可以使用 Windows 快捷方式帶參數啟動 UNIX 指令。
  • 因為 Cygwin 提供完整的 Bash shell,是以可以使用上述的所有相容特性(和其他特性)編寫 UNIX shell 腳本來維護 Windows!

    例如,可以使用 UNIX find

  • 在驅動器上搜尋資料。請注意一點:在 Windows 檔案名中常常使用空格。為了保持完整的檔案名(請記住,UNIX 參數以空格分隔),一定要使用 find -print0和 xargs -0。

      見圖 4。展開 Devel 類别,使用循環控件選擇以下包的最高版本:

  • autoconf2.1
  • automake1.10
  • binutils
  • gcc-core
  • gcc4-core
  • gdb
  • pcre
  • pcre-devel

做出選擇之後(為了滿足依賴性,可能會自動選擇其他包),單擊 Next 開始更新。與前面一樣,下載下傳和安裝過程需要一定的時間(開發包往往相當大)。 參考資料)

結束語

Cygwin 并不是完美的 UNIX 模拟環境,但已經相當好了。核心元件的文檔很完善,而且特别友善,它們介紹了模拟 DLL 中的限制和安全風險。

Cygwin 最棒的特性可能是它與 Windows 的內建。使用 Cygwin 和它的 UNIX 指令行來操縱系統可以大大提高生産力。建議在您的 shell PATH 變量中包含 Windows 的 Program Files 中的子目錄,這樣隻需輸入程式名,就能夠啟動路徑中的任何二進制程式。

更棒的是,Cygwin 可以在同一個視窗中管理多個作業。按 Control-Z 可以暫停正在運作的作業;輸入 bg和fg分别在背景和前台運作作業;輸入 jobs管理作業清單。當然,Cygwin 還可以對輸入和輸出進行重定向,可以通過管道把一個指令的輸出發送給另一個指令。