cygwin使用:cygwin使用心得体会
疯狂代码 http://CrazyCoder.cn/ ĵ:http:/CrazyCoder.cn/DeveloperUtil/Article69340.html
cygwin使用心得体会
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备份
将cygwinBIN加入到PATH
建个BAT文件:
@echo off
d:
cd d:\website\8thmanage
tar czvf 8thmanage.tgz 8thmanage
4.Windows使用SHELL脚本
将cygwinBIN加入到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
如果有Do话需要加上-d doname
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为
completion-ignore- _disibledevent=>
--------------------------------
安装
可以直接到http://www.cygwin.com下载个安装,up.exe这个只是个安装所有模块将从网络下载安装或者你可
以下载个cygwin.iso镜像直接映象成光盘再从光盘本地安装这样会快很多而且不用考虑断线问题
X下中文支持
locale支持
Cygwinlocale支持直都有问题好在X还可以使用XLOCALE
建议还是使用zh_CN.gbk, 不要使用zh_CN.GB2312
在移植时需要注意不要让连接libcygwin.a里面locale而是采用libX11.a里面_Xlocale思路方法是:检查被移植全
部源代码发现
#
就修改为
# X_LOCALE
#
同时注意连接库要添加-lX11.
如果对于结果没有把握可以找个Dependency Walker查看是否连接到了cygwin1.dll里面locale如果是就介绍
说明有遗漏
中文字体
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然后用x +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下不需要修改任何配置最多 3十秒
fontconfig就能够发现这些字体了
中文输入法
老黄(hzhr)移植了miniChinput到Cygwin我也移植了fcitx-1.8.5和3.0均可以从我网站WebSite上找到
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公司开发自由软件Software(该公司开发
了很多好东西著名还有eCos不过现已被Redhat收购)它对于学习unix/linux操作环境或者从unix到windows应
用移植或者进行某些特殊开发工作尤其是使用gnu工具集在windows上进行嵌入式系统开发非常有用随着嵌入
式系统开发在国内日渐流行越来越多开发者对cygwin产生了兴趣本文将对其作介绍
2 机理
cygnus 当初首先把gccgdbgas等开发工具进行了改进使他们能够生成并解释win32目标文件然后他们要把这
些工具移植到windows平台上去种方案是基于win32 api对这些工具源代码进行大幅修改这样做显然需要大量
工作因此他们采取了种区别思路方法——他们写了个共享库(就是cygwin dll)把win32 api中没有unix风格(如
fork,spawn,signals,select,s等)封装在里面也就是说他们基于 win32 api写了个unix系统库模拟层这样只要把这
些工具源代码和这个共享库连接到起就可以使用unix主机上交叉编译器来生成可以在 windows平台上运行工具
集以这些移植到windows平台上开发工具为基础cygnus又逐步把其他工具(几乎不需要对源代码进行修改只需
要修改他们配置脚本)软件Software移植到windows上来这样在windows平台上运行bash和开发工具、用户工
具感觉好像在unix上工作
有关cygwin实现更详细描述请参考http://cygwin.com/cygwin-ug-net/highlights.html.
3 安装设置cygwin
3.1 安装
要安装网络版cygwin可以到http://cygwin.com点击"Install Cygwin Now!"这样会先下载个叫做up.exeGUI安
装用它能下载个完整cygwin按照每屏指示可以方便进行安装
3.2 环境变量
开始运行bash的前应该设置些环境变量cygwin提供了个.bat文件里面已经设置好了最重要环境变量通过它来启
动bash是最安全办法这个.bat文件安装在cygwin所在根目录下 可以随意编辑该文件
CYGWIN变量用来针对cygwin运行时系统进行多种全局设置开始时可以不设置CYGWIN或者在执行bash前用
类似下面格式在dos框下把它设为tty
C:\> 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命令 HOME就可以看到他值 HOME=XXX可以进行设置)在
bash中用echo $HOME看其值为/cygdrive/c.
TERM变量指定终端型态如果美对它进行设置它将自动设为cygwin
LD_LIBRARY_PATH被cygwindlopen作为搜索.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 /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"这个属性决定了文本文件和 2进制文件是否按同样方式处理
4.1.3 其他路径相关信息
cygpath工具提供了在shell脚本中进行win32-posix路径格式转换能力
HOME, PATH,和LD_LIBRARY_PATH环境变量会在cygwin进程启动时自动被从Win32格式转换成了POSIX格
式(例如如果存在从该win32路径到posix路径安装会把c:\cygwin\bin转为/bin) 2009-9-6 23:05:39
疯狂代码 http://CrazyCoder.cn/