`
feidi
  • 浏览: 120438 次
社区版块
存档分类
最新评论

收集到的cygwin使用资料

阅读更多
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备份
将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.中文显示
1. 编辑用户home目录下的文件.inputc,去除以下几行的注释:

set meta-flag on

# 关闭bash命令行8字节字符转义符的转换
set convert-meta off

# 使bash命令行支持8字节字符输出
set output-meta on
set input-meta on

2 编辑用户home目录下的文件.bash_profile,在文件末尾加上下面几行:

alias ls='ls --color --show-control-chars'
export LC_ALL=zh_CN.GB23122
export LC_CTYPE=zh_CN.GB2312
export LANG=zh_CN.GB2312
export XMODIFIERS="@im=Chinput"3
stty cs8 -istrip
stty pass8
# Update: 少了这个less就不支持中文了
export LESSCHARSET=latin1

3,经过以上过程后,重启cygwin,就应许支持中文了,当然,如果要改变home目录则要编辑cygwin.bat,具体如下:
在bash命令之前加入set HOME=<用户目录>,比用户目录设置在G:\home。

在新设定的<用户目录>里创建文件.inputc和.bash_profile
由于用惯了windows,所以想在资源管理器里创建这两个文件,
所以干脆先跑到bash里用echo
创建这两个文件。
echo a>.inputc
echo a>.bash_profile
然后用你喜爱的编辑器编辑之。

要是ls还有乱码,vi ~\.bashrc中,修改:
alias ls=’ls -hF –show-control-chars –color=tty’

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)。
分享到:
评论
2 楼 rmn190 2011-11-24  
太好了, 刚从Linux转到Windows, 正需要一个关于cygwin方面帮助。

多谢分享!
1 楼 tigerli 2008-09-27  
赞!

相关推荐

    CygWin教程_linux_自己收集的

    CygWin是一个在Windows平台上模拟Linux环境的开源工具集,它允许用户在Windows操作系统上运行许多原本只能在Unix或Linux系统中使用的命令行工具和应用程序。CygWin的主要原理是提供一个类UNIX的API,使得Linux软件...

    cygwin动态链接库收集整理

    cygwin动态链接库收集整理, 几乎全部的动态链接库文件, 都在这里了(包含5个压缩包文件). 不知道CSDN的下载积分怎么调整, 找不到调整积分的地方, 默认的5积分感觉太高了.

    windows下配置cygwin、hadoop等并运行mapreduce及mapreduce程序讲解

    启动Cygwin终端,切换到Hadoop安装目录,如`cd /cygdrive/g/hadoop-0.16.4`。创建一个数据输入目录,例如`mkdir input-dir`,并在`input-dir`下创建包含数据的文本文件,如`input-a.txt`, `input-b.txt`, `input-c....

    cygwin setup 离线 1.7.5

    我在学习Hadoop是收集的应该是你要找的那个,可以离线安装。希望对你有帮助。 cygwin setup 离线安装 1.7 要先到 http://www.cygwin.com/setup.exe 先把setup.exe下载下来。点击。选择local 模式就可以了。

    rrdtool-1.2.4-cygwin-1.5.15

    7. **README**:这个文件通常包含关于软件的基本信息、安装指南、使用提示等内容,是了解RRDTool的重要参考资料。 RRDTool的核心功能包括: - **数据存储**:RRDTool采用一种称为“圆环缓冲”的数据结构,将新数据...

    rrdtool-1.2.15-cygwin-1.5.20.zip

    《rrdtool在Cygwin环境下的应用与详解》 rrdtool,全称为Round Robin Database Tool,是由Tobias Oetiker开发的一款强大的时序数据存储和图形化工具,主要用于收集、存储、检索和展示时间序列数据。该工具以其高效...

    android测试题集锦(搜集自安卓巴士)

    5. **内存回收**:在Java(包括Android)中,内存回收是由垃圾收集器自动完成的,程序员不需要手动释放内存。因此,选项B是正确的。 6. **Math.round方法**:Math.round方法会四舍五入到最接近的整数。11.5向上取整...

    Crossbow软件产品XServe的使用

    Crossbow软件产品XServe是一款无线传感器网络中间件,它作为无线传感器网络节点...XServe支持的数据格式和参数设置为其使用提供了灵活性,同时,它通过提供的各种数据处理方式,满足了从简单显示到复杂应用的多种需求。

    网上收集的狗拿耗子1-7和11-17篇.rar

    【狗拿耗子1-7和11-17篇.rar】这个压缩包集合了...这些文档构成了一个完整的ARM嵌入式系统学习路径,从底层硬件到上层应用,从理论知识到实践技巧,对于想要深入理解嵌入式系统开发的读者来说,是一份宝贵的参考资料。

    50个ARM开发相关的网站与学习资料(.pdf

    ARM开发是嵌入式系统开发的一部分,它涉及到微处理器、DSP、单片机、嵌入式操作系统等多方面的知识。以下是近 50 个 ARM 开发相关的网站和学习资料,涵盖了嵌入式开发、微处理器、DSP、单片机、嵌入式操作系统等多...

    gangliawindows实施报告.pdf

    Gmond负责收集本地系统的性能数据,并发送到Gmetad,后者再将数据整合并呈现给用户。通过Ganglia的Web界面,您可以实时监控整个集群的健康状况,及时发现并解决性能瓶颈问题。 总的来说,虽然Ganglia在Windows上的...

    FPGA_CryptoMining:我从此处(https:dgbwiki.comindex.php?title = FPGA_mining)和此处(https:dgbwiki.comindex.php?title = Supported_FPGAs)收集资源和信息,移植了运行Cygwin的Windows 10

    使用Cygwin Shell窗口运行挖掘软件。 设置以下环境变量: 导出QSYS_ROOTDIR =“ / cygdrive / c / intelFPGA_lite / 18.1 / quartus / sopc_builder / bin” export QUARTUSPATH =“ / cygdrive / c / int

    Agilla安装手记

    在TinyViz中,可以连接到TOSSIM模拟器,观察数据的收集和传输过程。 (五)AGILLA安装 Agilla的安装需要在TinyOS 1.x环境下进行,因为它与TinyOS 2.x不兼容。按照以下步骤安装: 1. 获取Agilla源码: 从Agilla的...

    kaldi详细介绍资料

    VoxForge是一个开源语音数据库,收集了免费的语音数据供研究使用。 对于使用GPU进行训练和解码的过程,文档也做了详细说明,包括CUDA的安装指导。此外,还介绍了如何在Kaldi中使用公开数据库,以及如何将自己的数据...

    国外PHP动态第四期

    3. **实现基本功能**:提供示例代码,演示如何实现用户登录、发布状态更新、读取用户资料等基本功能。 通过这些步骤,开发者可以轻松地创建出可以在Facebook平台上运行的应用程序。 #### 八、ECLIPSE和PHP ...

    hadoop中实现java网络爬虫(示例讲解)

    我们将从配置环境开始,包括Cygwin、Hadoop的设置,然后是Eclipse开发环境的搭建,以及使用Jsoup库进行网络数据抓取。整个过程涵盖了数据的收集、上传、分析和可视化。 【标签】:Java网络爬虫,Hadoop,Cygwin,...

    ARM开发相关的网站和学习资料.pdf

    4. GNU ARM:GNU ARM 是一个关于 ARM 开发的网站,收集了非常多 ARM 开发工具,而且是免费的。该网站是一个非常有价值的资源,强烈推荐。 5. ARM 官方中文网站:ARM 官方中文网站是 ARM 官方提供的中文资源,提供了...

Global site tag (gtag.js) - Google Analytics