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