引用:http://www.jb51.net/article/6236.htmhtml
1.在cygwin裏訪問Windows盤
cd /cygdrive/c
cd c:
2.整合cygwin命令到Windows中
假設cygwin安裝在d:/develop/cygwin,則將d:/develop/cygwin/bin添加到系統變量PATH中(最好加在windows前面,這樣的話,有些相同的命令的話,是先執行cygwin的命令,而不是windows命令,好比find)
就能夠直接在cmd.exe下面執行tar czvf xxx.tgz ./
基本上全部的命令均可以用了,包括ls,more,less,find,grep等。
3.使用TGZ備份
將cygwin的BIN加入到PATH
建一個BAT文件:
@echo off
d:
cd d:\website\8thmanage
tar czvf 8thmanage.tgz 8thmanage
4.Windows使用SHELL腳本
將cygwin的BIN加入到PATH
在$CYGWIN的目錄/var/下面建一腳本t.sh,注意,t.sh裏面的路徑,都是相對於$CYGWIN的,裏面須要訪問C盤的,請用/cygdrive/c/
在Windows下執行:
d:\cygwin\bin\bash d:\cygwin\var\t.sh
(能夠按期執行)
5.同步Windows系統用戶
mkpasswd -l > /etc/passwd
mkgroup -l > /etc/group
若是有Domain的話,須要加上-d domainname
6.安裝系統服務
cygrunsrv
7.cygwing下使用rsync
a.安裝rsync組件
b.進入cygwin,配置服務器
vi /etc/rsyncd.conf
...screts file=/etc/tom.ipaddr.pas
配置文件,參考我寫的另一篇rsync的文章,注意:密碼文件權限必須是0400
chmod 0400 /etc/tom.ipaddr.pas
c.啓動服務端
rsync --daemon
d.客戶端同步
在客戶端的cygwin下面,運行rsync同步,具體命令,請參考另一篇rsync的文章。
8.cygwin下使用SSHD
a.須要安裝了cygrunsrc,openssh
b.運行ssh-host-config -y
一路回車,直到出現CYGWIN=時,輸入tty ntsec,再回車,
(或者,增長一系統環境變量CUGWIN=nesec tty)
c.已經安裝好SSHD服務到你的Windows服務中,能夠直接在服務中啓動,關閉。
(cygrunsrc -S sshd或者net start sshd)
9.中文顯示
vi ~/.bashrc
# 讓ls和dir命令顯示中文和顏色
alias ls='ls --show-control-chars --color'
alias dir='dir -N --color'
# 設置爲中文環境,使提示成爲中文
export LANG="zh_CN.GBK"
# 輸出爲中文編碼
export OUTPUT_CHARSET="GBK"
~/.inputrc爲
set completion-ignore-case on
set meta-flag on
set output-meta on
set convert-meta off
cygwin.bat腳本爲:
@echo off
set MAKE_MODE=UNIX
安裝
能夠直接到http://www.cygwin.com下載一個安裝程序,setup.exe,這個程序只是一個安裝程序,全部的模塊將從網絡下載安裝。或者,你能夠下載一個cygwin.iso的鏡像,直接映象成光盤,再從光盤本地安裝,這樣會快不少,並且不用考慮斷線的問題。
X下的中文支持
locale支持
Cygwin的locale支持一直都有問題,好在X程序還可使用XLOCALE。
建議仍是使用zh_CN.gbk, 不要使用zh_CN.GB2312
在移植程序時須要注意不要讓程序鏈接libcygwin.a裏面的setlocale,而是採用libX11.a裏面的_Xsetlocale。方法是:檢查被移植程序的所有源代碼,發現
#include
就修改成
#define X_LOCALE
#include
同時注意程序的鏈接庫要添加-lX11.
若是對於結果沒有把握,能夠找個Dependency Walker查看程序是否鏈接到了cygwin1.dll裏面的setlocale,若是是,就說明有遺漏。
中文字體
PCF點陣字體
GTK1.x 和其餘一些老的X程序都是用X字體,
注意必需要有編碼與locale一致的字體,好比用zh_CN.gbk就必需要由GBK編碼的字體,用zh_CN.GB2312就必需要有GB2312編碼的字體
若是使用zh_CN.GB2312,這裏有一個RedOffice面帶的點陣字體包
能夠採用ttf2bdf從TTF抽取獲得bdf格式,而後再用bdf2pcf獲得pcf格式的字體文件。
(這裏有一個Windows版本的TTF2BDF,能夠將Windows TTF字體轉換出BDF字體, 注意獲得bdf後要手工編輯一下文件頭,將編碼聲明修改正確)
得
到字體以後,放到某個目錄下,執行mkfontdir生成fonts.dir,而後用xset +fp
/path/to/your/fonts將字體路徑加入便可(注意與fontconfig的配置不一樣,這裏路徑是不遞歸的,若是有的字體放在子目錄裏面,
子目錄也須要添加進去才行)。
TTF字體
不少新的應用程序(好比GTK2)都使用fontconfig/libxft2來顯示字體,它對TTF字體的支持比較好(X之前經過freetype, xft模塊也支持TTF字體,但對中日韓字體的支持不是太好,並且也在Cygwin下彷佛也沒有這些模塊)
徹底可使用Linux下的arphic字體包. 若是沒有安裝Linux,能夠到http://packages.debian.org下載相應的包,而後用7zip解壓提取出ttf文件。
獲得字體文件以後,放到某個目錄之下,編輯/etc/fonts/local.conf,將字體路徑加入:
/path/to/my/ttf/fonts若是隻是本身使用,能夠將字體文件放到~/.fonts下,不須要修改任何配置,最多三十秒fontconfig就可以發現這些字體了。
中文輸入法
老黃(hzhr)移植了miniChinput到Cygwin,我也移植了fcitx-1.8.5和3.0,都可以從個人網站上找到 http://www.oliwen.com/bama...
通常設置了LC_CTYPE和XMODIFIERS就能夠在程序中激活輸入輸入法了(除非這個程序沒有XIM支持):
LC_CTYPE=zh_CN.gbk
XMODIFIERS="@im=Chinput"
export LC_CTYPE XMODIFIERS
對於fcitx而言,XMODIFIERS設置爲何均可以(但必需要設置),因此設置爲"@im=Chinput"的話chinput和fcitx均可以正常使用
VI中的 Backspace 與 Delete 按鍵異常
首先確定 $TERM的設定為cygwin
echo $TERM
若不是,請設定為
TERM = cygwin
export TERM
Backspace 與 Delete這兩個鍵正常狀況下只有一個有用。可在 $HOME/.bash_profile 任選一個來使用
stty erase '^H' //ctrl+v, ctrl+h
stty erase '^?'
------------------------
Cygwin使用指南
1 引言
cygwin 是一個在windows平臺上運行的unix模擬環境,是cygnus solutions公司開發的自由軟件(該公司開發了不少好東西,著名的還有eCos,不過現已被Redhat收購)。它對於學習unix/linux操做環境,或者從unix到windows的應用程序移植,或者進行某些特殊的開發工做,尤爲是使用gnu工具集在windows上進行嵌入式系統開發,很是有用。隨着嵌入式系統開發在國內日漸流行,愈來愈多的開發者對cygwin產生了興趣。本文將對其做一介紹。
2 機理
cygnus 當初首先把gcc,gdb,gas等開發工具進行了改進,使他們可以生成並解釋win32的目標文件。而後,他們要把這些工具移植到windows平臺上去。一種方案是基於win32 api對這些工具的源代碼進行大幅修改,這樣作顯然須要大量工做。所以,他們採起了一種不一樣的方法——他們寫了一個共享庫(就是cygwin dll),把win32 api中沒有的unix風格的調用(如fork,spawn,signals,select,sockets等)封裝在裏面,也就是說,他們基於 win32 api寫了一個unix系統庫的模擬層。這樣,只要把這些工具的源代碼和這個共享庫鏈接到一塊兒,就可使用unix主機上的交叉編譯器來生成能夠在 windows平臺上運行的工具集。以這些移植到windows平臺上的開發工具爲基礎,cygnus又逐步把其餘的工具(幾乎不須要對源代碼進行修改,只須要修改他們的配置腳本)軟件移植到windows上來。這樣,在windows平臺上運行bash和開發工具、用戶工具,感受好像在unix上工做。
關於cygwin實現的更詳細描述,請參考http://cygwin.com/cygwin-ug-net/highlights.html.
3 安裝設置cygwin
3.1 安裝
要安裝網絡版的cygwin,能夠到http://cygwin.com,點擊"Install Cygwin Now!"。這樣會先下載一個叫作setup.exe的GUI安裝程序,用它能下載一個完整的cygwin。按照每一屏的指示能夠方便的進行安裝。
3.2 環境變量
開始運行bash以前,應該設置一些環境變量。cygwin提供了一個.bat文件,裏面已經設置好了最重要的環境變量。經過它來啓動bash是最安全的辦法。這個.bat文件安裝在cygwin所在的根目錄下。 能夠隨意編輯該文件。
CYGWIN變量用來針對cygwin運行時系統進行多種全局設置。開始時,能夠不設置CYGWIN或者在執行bash前用相似下面的格式在dos框下把它設爲tty
C:\> set CYGWIN=tty notitle glob
PATH 變量被cygwin應用程序做爲搜索可知性文件的路徑列表。當一個cygwin進程啓動時,該變量被從windows格式(e.g. C:\WinNT\system32;C:\WinNT)轉換成unix格式(e.g., /WinNT/system32:/WinNT)。若是想在不運行bash的時候也可以使用cygwin工具集,PATH起碼應該包含x:\cygwin \bin,其中x:\cygwin 是你的系統中的cygwin目錄。
HOME變量用來指定主目錄,推薦在執行bash前定義該變量。當 cygwin進程啓動時,該變量也被從windows格式轉換成unix格式,例如,做者的機器上HOME的值爲C:\(dos命令set HOME就能夠看到他的值,set HOME=XXX能夠進行設置),在bash中用echo $HOME看,其值爲/cygdrive/c.
TERM變量指定終端型態。若是美對它進行設置,它將自動設爲cygwin。
LD_LIBRARY_PATH被cygwin函數dlopen()做爲搜索.dll文件的路徑列表,該變量也被從windows格式轉換成unix格式。多數Cygwin應用程序不使用dlopen,於是不須要該變量。
3.3 改變cygwin的最大存儲容量
Cygwin 程序缺省能夠分配的內存不超過384 MB(program+data)。多數狀況下不須要修改這個限制。然而,若是須要更多實際或虛擬內存,應該修改註冊表的 HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER區段。田家一個DWORD鍵heap_chunk_in_mb並把它的值設爲須要的內存限制,單位是十進制MB。也能夠用cygwin中的regtool完成該設置。例子以下:
regtool -i set /HKLM/Software/Cygnus\ Solutions/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygnus\ Solutions/Cygwin
4 使用cygwin
這一段講一下cygwin和傳統unix系統的不一樣之處。
4.1 映射路徑名
4.1.1 引言
cygwin 同時支持win32和posix風格的路徑,路徑分隔符能夠是正斜槓也能夠是反斜槓。還支持UNC路徑名。(在網絡中,UNC是一種肯定文件位置的方法,使用這種方法用戶能夠不關心存儲設備的物理位置,方便了用戶使用。在Windows操做系統,Novell Netware和其它操做系統中,都已經使用了這種規範以取代本地命名系統。在UNC中,咱們不用關心文件在什麼盤(或卷)上,不用關心這個盤(或卷)所在服務器在什麼地方。咱們只要如下面格式就能夠訪問文件:
\\服務器名\共享名\路徑\文件名
共享名有時也被稱爲文件所在卷或存儲設備的邏輯標識,但使用它的目的是讓用戶沒必要關心這些卷或存儲設備所在的物理位置。)
符合posix標準的操做系統(如linux)沒有盤符的概念。全部的絕對路徑都以一個斜槓開始,而不是盤符(如c:)。全部的文件系統都是其中的子目錄。例如,兩個硬盤,其中之一爲根,另外一個多是在/disk2路徑下。
由於許多unix系統上的程序假定存在單一的posix文件系統結構,因此cygwin專門維護了一個針對win32文件系統的內部posix視圖,使這些程序能夠在windows下正確運行。在某些必要的狀況下,cygwin會使用這種映射來進行win32和posix路徑之間的轉換。
4.1.2 cygwin mount表
cygwin 中的mount程序用來把win32盤符和網絡共享路徑映射到cygwin的內部posix目錄樹。這是與典型unix mount程序類似的概念。對於那些對unix不熟悉而具備windows背景的的人來講,mount程序和早期的dos命令join很是類似,就是把一個盤符做爲其餘路徑的子目錄。
路徑映射信息存放在當前用戶的cygwin mount表中,這個mount table 又在windows的註冊表中。這樣,當該用戶下一次登陸進來時,這些信息又從註冊表中取出。mount 表分爲兩種,除了每一個用戶特定的表,還有系統範圍的mount表,每一個cygwin用戶的安裝表都繼承自系統表。系統表只能由擁有合適權限的用戶(windows nt的管理員)修改。
當前用戶的mount表能夠在註冊表"HKEY_CURRENT_USER/Software/Red Hat, Inc./Cygwin/mounts v" 下看到。系統表
存在HKEY_LOCAL_MACHINE下。
posix 根路徑/缺省指向系統分區,可是可使用mount命令從新指向到windows文件系統中的任何路徑。cygwin從win32路徑生成posix路徑時,老是使用mount表中最長的前綴。例如若是c:被同時安裝在/c和/,cygwin將把C:/foo/bar轉換成/c/foo/bar.
若是不加任何參數地調用mount命令,會把Cygwin當前安裝點集合所有列出。在下面的例子中,c盤是POSIX根,而d盤被映射到/d。本例中,根是一個系統範圍的安裝點,它對全部用戶都是可見的,而/d僅對當前用戶可見。
c:\> mount
f:\cygwin\bin on /usr/bin type system (binmode)
f:\cygwin\lib on /usr/lib type system (binmode)
f:\cygwin on / type system (binmode)
e:\src on /usr/src type system (binmode)
c: on /cygdrive/c type user (binmode,noumount)
e: on /cygdrive/e type user (binmode,noumount)
還可使用mount命令增長新的安裝點,用umount刪除安裝點。
當Cygwin 不能根據已有的安裝點把某個win32路徑轉化爲posix路徑時,cygwin會自動把它轉化到一個處於缺省posix路徑/cygdrive下的的一個安裝點. 例如,若是Cygwin 訪問Z:\foo,而Z盤當前不在安裝表內,那麼Z:\將被自動轉化成/cygdrive/Z.
能夠給每一個安裝點賦予特殊的屬性。自動安裝的分區顯示爲「auto」安裝。安裝點還能夠選擇是"textmode"仍是 "binmode",這個屬性決定了文本文件和二進制文件是否按一樣的方式處理。
4.1.3 其餘路徑相關信息
cygpath工具提供了在shell腳本中進行win32-posix路徑格式轉換的能力。
HOME, PATH,和LD_LIBRARY_PATH環境變量會在cygwin進程啓動時自動被從Win32格式轉換成了POSIX格式(例如,若是存在從該win32路徑到posix路徑的安裝,會把c:\cygwin\bin轉爲/bin)。linux