收集到的cygwin使用资料.doc_第1页
收集到的cygwin使用资料.doc_第2页
收集到的cygwin使用资料.doc_第3页
收集到的cygwin使用资料.doc_第4页
收集到的cygwin使用资料.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

收集到的cygwin使用资料关键字: linux, cygwin cygwin使用心得1.在cygwin里访问Windows盘cd /cygdrive/ccd 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 offd:cd d:website8thmanagetar czvf 8thmanage.tgz 8thmanage4.Windows使用SHELL脚本将cygwin的BIN加入到PATH在$CYGWIN的目录/var/下面建一脚本t.sh,注意,t.sh里面的路径,都是相对于$CYGWIN的,里面需要访问C盘的,请用/cygdrive/c/在Windows下执行:d:cygwinbinbash d:cygwinvart.sh(可以定期执行)5.同步Windows系统用户mkpasswd -l /etc/passwdmkgroup -l /etc/group如果有Domain的话,需要加上-d domainname6.安装系统服务cygrunsrv7.cygwing下使用rsynca.安装rsync组件b.进入cygwin,配置服务器vi /etc/rsyncd.conf.screts file=/etc/tom.ipaddr.pas配置文件,参考我写的另外一篇rsync的文章,注意:密码文件权限必须是0400chmod 0400 /etc/tom.ipaddr.pasc.启动服务端rsync -daemond.客户端同步在客户端的cygwin下面,运行rsync同步,具体命令,请参考另外一篇rsync的文章。8.cygwin下使用SSHDa.需要安装了cygrunsrc,opensshb.运行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 onset input-meta on2 编辑用户home目录下的文件.bash_profile,在文件末尾加上下面几行:alias ls=ls -color -show-control-charsexport LC_ALL=zh_CN.GB23122export LC_CTYPE=zh_CN.GB2312export LANG=zh_CN.GB2312export XMODIFIERS=im=Chinput3stty cs8 -istripstty pass8# Update: 少了这个less就不支持中文了export LESSCHARSET=latin13,经过以上过程后,重启cygwin,就应许支持中文了,当然,如果要改变home目录则要编辑cygwin.bat,具体如下:在bash命令之前加入set HOME=,比用户目录设置在G:home。在新设定的里创建文件.inputc和.bash_profile由于用惯了windows,所以想在资源管理器里创建这两个文件,所以干脆先跑到bash里用echo创建这两个文件。echo a.inputcecho a.bash_profile然后用你喜爱的编辑器编辑之。要是ls还有乱码,vi .bashrc中,修改:alias ls=ls -hF show-control-chars color=ttycygwin.bat脚本为: echo off set MAKE_MODE=UNIX -安装可 以直接到下载一个安装程序,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,可以到下载相应的包,然后用7zip解压提取出ttf文件。得到字体文件之后,放到某个目录之下,编辑/etc/fonts/local.conf,将字体路径加入:/path/to/my/ttf/fonts如果只是自己使用,可以将字体文件放到/.fonts下,不需要修改任何配置,最多三十秒fontconfig就能够发现这些字体了。中文输入法老黄(hzhr)移植了miniChinput到Cygwin,我也移植了fcitx-1.8.5和3.0,均可以从我的网站上找到 /bama.一般设置了LC_CTYPE和XMODIFIERS就可以在程序中激活输入输入法了(除非这个程序没有XIM支持):LC_CTYPE=zh_CN.gbkXMODIFIERS=im=Chinputexport LC_CTYPE XMODIFIERS对于fcitx而言,XMODIFIERS设置为什么都可以(但必须要设置),所以设置为im=Chinput的话chinput和fcitx都可以正常使用VI中的 Backspace 與 Delete 按鍵異常首先確定 $TERM的設定為cygwinecho $TERM若不是,請設定為TERM = cygwin export TERMBackspace 與 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实现的更详细描述,请参考/cygwin-ug-net/highlights.html.3 安装设置cygwin3.1 安装要安装网络版的cygwin,可以到,点击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:WinNTsystem32;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 1024regtool -v list /HKLM/Software/Cygnus Solutions/Cygwin4 使用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: mountf:cygwinbin on /usr/bin type system (binmode)f:cygwinlib 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:cygwinbin转为/bin)。基本操作命令:- - ls #以默认方式显示当前目录文件列表ls a #显示所有文件包括隐藏文件ls l #显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行ls -color=never *.so obj #不显示文字颜色,将所有so文件记录到obj文件中-cd dir #切换到当前目录下的dir目录cd / #切换到根目录cd . #切换到到上一级目录cd ./. #切换到上二级目录cd #切换到用户目录,比如是root用户,则切换到/root下- rm file #删除某一个文件rm -fr dir #删除当前目录下叫dir的整个目录- cp source target #将文件source 复制为 targetcp /root/source . #将/root下的文件source复制到当前目录cp av soure_dir target_dir #将整个目录复制,两目录完全一样cp fr source_dir target_dir #将整个目录复制,并且是以非链接方式复制,当source目录带有符号链接时,两个目录不相同- mv source target #将文件source更名为target- diff dir1 dir2 #比较目录1与目录2的文件列表是否相同,但不比较文件的实际内容,不同则列出diff file1 file2 #比较文件1与文件2的内容是否相同,如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的comm file1 file2 #比较文件,显示两个文件不相同的内容- echo message #显示一串字符echo message message2 #显示不连续的字符串cat:cat file #显示文件的内容,和DOS的type相同cat file | more #显示文件的内容并传输到more程序实现分页显示,使用命令less file可实现相同的功能more #分页命令,一般通过管道将内容传给它,如ls | more- export LC_ALL=zh_CN.GB2312 #将环境变量LC_ALL的值设为zh_CN.GB2312export DISPLAY=0:0 #通过该设置,当前字符终端下运行的图形程序可直接运行于Xserverdate #显示当前日期时间date -s 20:30:30 #设置系统时间为20:30:30date -s 2002-3-5 #设置系统时期为2003-3-5clock r #对系统Bios中读取时间参数clock w #将系统时间(如由date设置的时间)写入Bios- eject #umout掉CDROM并将光碟弹出,但cdrom不能处于busy的状态,否则无效- du #计算当前目录的容量du -sm /root #计算/root目录的容量并以M为单位find -name /path file #在/path目录下查找看是否有文件filegrep -ir “chars” #在当前目录的所有文件查找字串chars,并忽略大小写,-i为大小写,-r为下一级目录- vi file #编辑文件filevi 原基本使用及命令: 输入命令的方式为先按ctrl+c, 然后输入:x(退出),:x!(退出并保存) :w(写入文件),:w!(不询问方式写入文件), :r file(读文件file) ,:%s/oldchars/newchars/g(将所有字串oldchars换成newchars) 这一类的命令进行操作- man ls #读取关于ls命令的帮助man ls | grep color #读取关于ls命令的帮助并通过grep程序在其中查找color字串- startx #运行Linux图形有环境Xfree86 #只运行X图形server- reboot #重新启动计算机halt #关闭计算机init 0 #关闭所有应用程序和服务,进入纯净的操作环境init 1 #重新启动应用及服务init 6 #重新启动计算机- 扩展命令- - tar xfzv file.tgz #将文件file.tgz解压tar xfzv file.tgz -C target_path #将文件file.tgz解压到target_path目录下tar cfzv file.tgz source_path #将文件source_path压缩为file.tgztar c directory directory.tar #将目录directory打包成不压缩的directory.targzip directory.tar #将覆盖原文件生成压缩的 directory.tar.gzgunzip directory.tar.gz #覆盖原文件解压生成不压缩的 directory.tar。tar xf directory.tar #可将不压缩的文件解包- dmesg #显示kernle启动及驱动装载信息uname #显示操作系统的类型uname -R #显示操作系统内核的version- strings file 显示file文件中的ASCII字符内容- rpm -ihv program.rpm #安装程序program并显示安装进程rpm2targz program.rpm program.tgz #将rpm格式的文件转换成tarball格式- su root #切换到超级用户sulogin /dev/tty4 #在tty4即alt+F4终端等待用户登陆或直接登陆开启一个shellchmod a+x file #将file文件设置为可执行,脚本类文件一定要这样设置一个,否则得用bash file才能执行chmod 666 file #将文件file设置为可读写chown user /dir #将/dir目录设置为user所有- mknod /dev/hda1 b 3 1 #创建块设备hda1,主设备号为3,从设备号为1,即master硬盘的的第一个分区mknod /dev/tty1 c 4 1 #创建字符设备tty1,主设备号为4,众设备号为1,即第一个tty终端- touch /tmp/running #在/tmp下创建一个临时文件running,重新启动后消失- sleep 9 #系统挂起9秒钟的时间- lpd stop 或 cups stop #停止打印服务程序lpd start 或 cups start #启动打印服务程序lpd restart 或 cups restart #重新启动打印服务程序lpr file.txt #打印文件file.txt- fdisk /dev/hda #就像执行了dos的fdisk一样cfdisk /dev/hda #比fdisk界面稍为友好些mount -t ext2 /dev/hda1 /mnt #把/dev/hda1装载到 /mnt目录df #显示文件系统装载的相关信息 mount -t iso9660 /dev/cdrom /mnt/cdrom #将光驱加载到/mnt/cdrom目录mount-t smb //sharedir /mnt -o username=tomlinux,password=tomlinux #将windows的的共享目录加载到/mnt/smb目录,用户名及密码均为tomlinuxmount -t nfs :/sharedir /mnt #将nfs服务的共享目录sharedir加载到/mnt/nfs目录umount /mnt #将/mnt目录卸载,/mnt目录必须处于空闲状态umount /dev/hda1 #将/dev/hda1设备卸载,设备必须处于空亲状态sync #将cache中的内容与磁盘同步,在Linux中复制文件,一般要系统空闲才去写文件e2fsck /dev/hda1 #检查/dev/hda1是否有文件系统错误,提示修复方式e2fsck -p /dev/hda1#检查/dev/hda1是否有错误,如果有则自动修复e2fsck -y /dev/hda1#检查错误,所有提问均于yes方式执行e2fsck -c /dev/hda1#检查磁盘是否有坏区mkfs /dev/hda1 #格式化/dev/hda1为ext2格式mkfs.minix /dev/hda1 #格式化/dev/hda1为minix格式文件系统mfks /dev/hda9 #格工化/dev/hda9为Linux swap格式swapon /dev/hda9 #将swap分区装载当作内存来用swapoff /dev/hda9 #将swap分区卸载- lilo #运行lilo程序,程序自动查找/etc/lilo.conf并按该配置生效lilo -C /root/lilo.conf #lilo程序按/root/lilo.conf配置生效grub #在Linux shell状态下运行boot loader设置程序grub-install #安装grub磁盘引导程序,成功后升级内核无须像lilo一样要重新启动系统,只需修改/etc/grub.conf即可实现新引导配置rdev bzImage #显示kernel的根分区信息rdev bzImage /dev/hda1 #将kernel的根分区设置为/dev/hda1,这在没有lilo等引导程序的系统中非常重要.- dd if=/dev/fd0 of=floppy.fd #将软盘的内容复制成一个镜像,功能与旧石器时代常用的hd-copy相同dd if=/dev/zero of=root.ram bs=1024,count=1024 #生成一个大小为1M的块设备,可以把它当作硬盘的一个分区来用mkfs root.ram #将块设备格式化为ext2格式dd if=root.ram of=/dev/ram0 #将init.rd格式的root.ram的内容导入内存mount /dev/ram0 /mnt #ramdisk /dev/ram0装载到/mnt 目录- gcc hello.c #将hello.c编译成名为a.out二进制执行文件gcc hello.c -o hello #将hello.c编译成名为hello的二进制执行文件gcc -static -o hello hello.c #将hello.c编译成名为hello的二进制静态执行文件ldd program #显示程序所使用了哪些库objcopy -S program #将程序中的符号表及无用的调试信息去掉,可以小很多- strace netscape #跟踪程序netscape的执行,看调用的库,环境变量设置,配置文件,使用的设备,调用的其它应用程序等,在strace下,程序干了什么东东一目了然。ps #显示当前系统进程信息ps ef #显示系统所有进程信息kill -9 500 #将进程编号为500的程序干掉killa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论