Board logo

标题: 完全深埋于Cygwin这谭水中 [打印本页]

作者: sky5    时间: 2008-1-19 19:45     标题: 完全深埋于Cygwin这谭水中

今天装了一下,用上,比虚拟机方便多了,不多说,转些介绍大家看看
---------------------------------------------------------------------------------------------------------------------------不开放html标签也真够衰的了,连hr也不能用

Cygwin使用指南    http://blog.csdn.net/images/star.gifhttp://blog.csdn.net/images/star.gifhttp://blog.csdn.net/images/star.gifhttp://blog.csdn.net/images/star.gifhttp://blog.csdn.net/images/star_half.gif  http://blog.csdn.net/images/ask.gif
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)。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=38275
作者: sky5    时间: 2008-1-19 19:48     标题: http://www.cygwin.cn/site/install/

对了,这是中国镜像
作者: sky5    时间: 2008-1-19 20:08     标题: 一些链接 都是强人啊

首页 > 网络安全 > 系统 > 正文


cygwin搭建蜜罐实例
www.juntuan.net (2005-04-06 17:28:30)



前言:最近很霉,三台服务器都坏了,不能玩Jail了,刚好最近又想编译些B socket的程序,装个
cygwin吧,无意中发现其有daemon功能还不错,恰好可以用来做个蜜罐,虽然在功能上比不上Jail,
不过还有些“异曲同工”之妙吧,相信可以满足一部分在winnt下又想玩Jail的朋友吧...本人水平
有限,写得也不好,希望各位能指出其中的错处,谢谢:)......

  一直以为cygwin只是用来在WIN下编译一些程序,打造个SHELL的虚拟运行环境而已。但最近发
现其实它还能够完成一些蜜罐的功能。下面是我所写的一些实验笔记,相信是会有一定的错漏的,
希望各位能替我指出:)。

实验目的:在单主机下做一个轻量的(占少量系统资源的)又能提供正常服务、再者在准备“牺牲”
或已经“牺牲”的前提下不会影响本地HOST OS运作稳定性与分析能力的蜜罐系统。

实验环境:
硬件环境:CPU C900 - 128MB RAM - 40GB HARDDISK
软件环境:HOST OS WIN2000 PRO - GUEST OS CYGWIN_NT 5.0 i686

在本地机上安装cygwin。
cygwin安装程序:
http://demonalex.nease.net/cygwin_setup.exe

安装过程(下面只记录比较重要的步骤的截图,不重要的就...):


因为我们本身没有cygwin的release,所以只好选择“Install from Internet”了。


选择cygwin基本属性。


选择安装release的下载路径。


选择直接下载(PS:当然,如果你是用代理的话就要...)。


这里随便选个下载地址吧(纳闷,中国就是没有这东西的镜像网站)...


这一步是下载Packages列表。


出来了...


注意我们这次实验的重点,打开Category为Net的列表。找到我们要的东西了吧?什么apache、nfs、
proftpd的...装上它们(最好把inetd和xinetd也装上,方便以后用它们来实验嘛...)。选择安装
的步骤是:看看New的那一列,凡在那一列的值为Skip的都是没有被选定安装的,单击一下那个Skip
就可以切换了;如果是Keep的话就是已经选定安装的了。切换时要注意版本号,尽量选择新一点的
版本吧(PS:其实这点随你喜欢吧:P)。接下来按“下一步”就可以了...

后面的步骤比较简单,主要都是在漫长的在线安装过程中等待吧...因此我就不多说了...


配置过程。
首先我们需要启动cygwin默认的bash,是不是又可以看到那熟悉的SHELL界面了呢?:P...首先要确
定你要做“蜜罐服务”,这里我们用Apache来满足一下渗透者和服务使用者的需求吧。

首先编辑httpd.conf。
$vi /etc/apache/httpd.conf


编辑其中的所需要的关键字(如:DocumentRoot等)。这些就不用我多做介绍了吧(PS:详细点的
配置文档可以在http://fanqiang.chinaunix.net/a6/b1/index.html中找到)?


:wq保存设置(偶比较懒,只改了其中三-四项...:P);然后:
$cd /usr/sbin
$apachectl start
大功告成了...
$netstat -an|grep "80"
没错吧?



善后/安全性问题。

1)“蜜罐服务”崩溃问题:像上例中的httpd服务是跑在父进程bash(cygwin的主进程)下的,因
此不必担心其因为出现服务异常崩溃或被故意攻击(溢出、拒绝服务攻击等因数)而影响到 HOST
OS的正常运作。就算对方针对cygwin下的httpd进行溢出最多也只能得到其父进程下的SHELL(就算
是ROOTSHELL,也只能跑在cygwin本身的物理路径下,这点的确与JAIL非常相似),而不会对本地NT
系统造成任何影响,这个就是制造一个基于单主机的蜜罐的前提条件了。

2)帐号信息泄露问题:CYGWIN下SHELL的确有很多依赖HOST OS(这里指的是我的那台NT系统)的
地方,如NIC接口、帐号模块等等(这点可能是它的缺点吧,也可能因为这样它占用HOST OS的资源
才那么的小)。听到这里你可能会担心共享的帐号模块导致帐号信息泄露问题。我粗略地查看了一
个,BASH里面是没有/etc/shadow文件的,且/etc/passwd也不会带来多大的泄露,不过还是可以通
过它找到HOST OS的帐号名列表,建议把那些没必要的帐号信息都删掉。至于passwd命令,我配合
su测试了N次都是不能正常工作的...(PS:可能是我水平有限吧:P),大伙可以放心了吧?!

3)服务日志查询问题:蜜罐的事后日志查询功能是非常重要的,通过它我们才可以了解到骇客究
竟想干什么,曾经干过些什么。如果你没有修改/etc/apache/httpd.conf中关于日志输出的关键字
的话,它默认是在/var/log/apache/下的,分别是access_log和error_log,你只要用cat翻查一下
(再或者加个管道符号与grep等等)就可以得到自己想知道的信息了...

4)其它注意事项:因为怎么说CYGWIN也只是一个虚拟的SHELL,所以它和正常的SHELL还是有点不
同的,可能因此会给心细的骇客们一些不必要的提示吧。上面只是介绍了最常用的APACHE,其实你
还可以使用其他的服务或者配合inetd与xinetd打造其他的“蜜罐服务”。还有一点是值得注意的,
我已经说过任何在其SHELL下跑的daemon都是依赖父进程bash而存在的,因此一但你在HOST OS中关
闭了bash进程的话,所有在cygwin下跑的服务都会被自动杀死的,所以如果你想保住你的“蜜罐”
一直都ONLINE的话最好就不要关掉那个“可爱”的SHELL窗口。
(http://www.fanqiang.com)

原文链接:http://www.juntuan.net/hkjc/aqff/n/2005-01-20/404.html



相关文章
最佳的75个安全工具 2005-01-29 15:11:56





★  感谢所有的作者为我们学习技术知识提供了一条捷径  ★
www.fanqiang.com

[ 本帖最后由 sky5 于 2008-1-19 20:09 编辑 ]
作者: sky5    时间: 2008-1-19 20:12

使用SecureCRT登录本机cygwin
引:
    直接用cygwin时发现"粘贴","复制"相当的麻烦. 搜索资料,找出一下方法.

1. 安装cygwin, 并安装sshd.(跟openssh有关的都选上也可^^)
2. 打开cygwin控制台:输入ssh-host-config,一路yes.
+--------------------------------------------------------------------------------+
admin@valley ~
$ ssh-host-config
Overwrite existing /etc/ssh_config file? (yes/no) yes
Generating /etc/ssh_config file
Overwrite existing /etc/sshd_config file? (yes/no) yes
Privilege separation is set to yes by default since OpenSSH 3.3.
However, this requires a non-privileged account called 'sshd'.
For more info on privilege separation read /usr/share/doc/openssh/README.privsep.

Should privilege separation be used? (yes/no) yes
Generating /etc/sshd_config file

Host configuration finished. Have fun!
+--------------------------------------------------------------------------------+

3. 提示安装成功. 输入net start sshd, 启动 ssh服务.
+--------------------------------------------------------------------------------+
admin@valley ~
$ net start sshd
CYGWIN sshd 服务正在启动 .
CYGWIN sshd 服务已经启动成功。
+--------------------------------------------------------------------------------+

4. 在SecureCRT设置一个Sessions, 协议 ssh.
   用户名: windows 的 登录用户名
   口令:   windows 的 登录用户密码

   Terminal.Emulation 勾上 ANIS Color.
   Terminal.Appearance 中选下风格, 字体.
-------------- over ---------------------

大功告成!
+--------------------------------------------------------------------------------+
admin@valley /cygdrive/c
$ ls -F
AUTOEXEC.BAT*  Documents and Settings/  Program Files/  System Volume Information/  cmd.txt*   menu.txt.bak*  response.txt*
BOOT.INI*      IO.SYS*                  Python25/       WINDOWS/                    cygwin/    ntldr*         tmp/
CONFIG.SYS*    MSDOS.SYS*               RECYCLER/       bak/                        dell/      oracle/
Dev-Cpp/       NTDETECT.COM*            RavBin/         bootfont.bin*               menu.txt*  pagefile.sys
+--------------------------------------------------------------------------------+

参考:
   http://blog.linuxmine.com/7026/viewspace-637
   http://islue.blogspot.com/search/label/cygwin



作者: sky5    时间: 2008-1-19 20:13

  讲了cygwin的安装,vi的使用,gcc,g++的使用(初级)- -
  
  
  
  从windows到linux -- 编程篇 -- cygwin,在win中开发linux程序
  从windows到linux -- 编程篇 -- cygwin,在win中开发linux程序
   乾坤一笑[smileonce] smileonce@126.com 2004-7-23
   版权所有 转载请注明出处 http://blog.csdn.net/smileonce
  
  
  
  从windows到linux -- 编程篇 -- cygwin,在win中开发linux程序
  从windows到linux -- 编程篇 -- cygwin,在win中开发linux程序
   乾坤一笑[smileonce] smileonce@126.com 2004-7-23
   版权所有 转载请注明出处 http://blog.csdn.net/smileonce
  
   很多用windows的朋友不习惯于用linux的开发环境。虽然很乐意尝试一下,但是往往怕linux系统打乱了自己的正常生活:1〉装linux系统把windows系统给搞坏了,导致自己无法正常生活;2>linux开发上手太难,写出第一个helloworld不亚于java的难度,环境配置摸不着头脑。 对于此,我的看法是:路不管平还是陡,终归你要走的,如果你愿意投入到linux开发的社群中来,不会安装linux系统,不会配置工作环境是不能想象的。(事实上,确实要了解很多东西的原理,不然很难排错:诸如,硬盘引导器的引导原理、分区结构原理及linux分区结构和文件系统、环境变量的设置、种类繁多的压缩包安装包的解压安装方法、用户管理权限管理等常用命令、以至于驱动安装系统中文化等等异常琐碎的东东)。
  
  本文试图跳过这个难走的步骤,启用一个win环境下的linux仿真器(和linux下面的命令行开发环境基本一致),用短短的20分钟的时间,教你做出一个纯正的linux下gcc编译的helloworld。就象是买点心前先尝尝味道,不也是一件很愉快的事情么?(注:cygwin事实上不仅有此模拟功能,它也是移植unix<-->win程序的一个很有效的工具,也有人用它来做嵌入式系统开发)
  
  一、cygwin是什么?
   这个问题你最好google一下"cygwin的历史",或许能够获得更为详尽的答案。简而言之,cygwin是一个在windows平台上运行的linux模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。插一句废话,很多朋友不明白linux和unix的区别和联系,在此也简要介绍一下。UNIX是一个注册商标,是要满足一大堆条件并且支付可观费用才能够被授权使用的一个操作系统;linux是unix的克隆版本,是由其创始人Linus和诸多世界知名的黑客手工打造的一个操作系统。为什么linux和unix之间有很多软件可以很轻松的移植?因为linux也满足POSIX规范,所以在运行机制上跟unix相近。
   以下引用网上的一段话(出处:http://blog.csdn.net/glock18/archive/2004/07/10/38275.aspx),
  用于说明cygwin的工作机制: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
  
  二、cygwin的安装。
   cygwin的安装文件很容易通过google找到。目前国内的网站上有"网络安装版"和"本地安装版"两种。标准的发行版应该是 网络安装版。两者并无大不同,下面介绍一下安装的过程。
  
   step1. 下载后,点击安装文件(setup.exe)进行安装,第一个画面是GNU版权说明,点"下一步(N)—>",
  进入安装模式选择画面。
  
   step2. 安装模式有"Install from Internet"、"Download form Internet"、
  "Install from Local Directory" 三种。"Install form Internet"就是直接从internet上装,适用于网速较快的情况。如果你和我一样网速不是很快,或者说装过之后想把下载的安装文件保存起来,下次不再下载了直接安装,就应该选择"Download form Internet",下载安装的文件(大约40M左右)。
  事实上,所谓的"本地安装版",也是别人从网上下载全部文件后打的包(适用于中国国情嘛^_^)
  
   step3. 接下来是选择安装目的路径和安装源文件所在的路径,之后就进入了选择安装包所在的路径。
  注意了阿,这里可是重头戏。我第一安装的时候就是没有看清这一步,结果没有把gcc装进去,导致没法编译文件。
   + All Default
   + Admin Default
   ....
   + Devel Default
   + Editors Default
   ....
  如上图所示,你在这个TreeView的某个节点上双击,就可以改变它的状态,如Default、Install、Uninstall、Reinstall四种状态。默认的都是Default状态,很多工具的默认状态都是不安装。
  在这里我选择了在All这一行上后面的Default上点Install,全部安装,以免后患。(注意:这里的树形控件和win下面的不同,你试试点在All上点 和 在All这一行后面的Default上点,会有不同的响应)
  
   step4. 点下一步,安装成功。它会自动在你的桌面上建立一个快捷方式。
  
  
  
   好了,下面就开始我的linux旅程了。双击cygwin的快捷方式进入系统。
  首先介绍几个简单的linux命令。
  pwd 显示当前的路径
  cd 改变当前路径,无参数时进入对应用户的home目录
  ls 列出当前目录下的文件。此命令有N多参数,比如ls -al
  ps 列出当前系统进程
  kill 杀死某个进程
  mkdir 建立目录
  rmdir 删除目录
  rm 删除文件
  mv 文件改名或目录改名
  man 联机帮助
  less 显示文件的最末几行
  
  由于linux下面的命令大多都有很多参数,可以组合使用。所以,每当你不会或者记不清楚改用那个参数,那个开关的时候,可以用man来查找,比如,我想查找ls怎么使用,可以键入
  $ man ls
  系统回显信息如下:
  LS(1) FSF LS(1)
  NAME
   ls - list directory contents
  SYNOPSIS
   ls [OPTION]... [FILE]...
  DESCRIPTION
   List information about the FILEs (the current directory by
   default). Sort entries alphabetically if none of -cftuSUX
   nor --sort.
   -a, --all
   do not hide entries starting with .
   -A, --almost-all
   do not list implied . and ..
   -b, --escape
   print octal escapes for nongraphic characters
   --block-size=SIZE
   use SIZE-byte blocks
  :
  很全是吧,嘿嘿。
  
  好了,多说无意,让我们来写一个hello world程序。
  # cd
   进入了/home/administrator目录,我当前的登陆帐号是administrator
  
  # mkdir source
   建立一个叫做source的子目录
  
  # cd source
   进入 /home/administrator/source
  
  # vim hello.c
  
   启动vim编辑器,来编写程序。好了,现在有必要简要介绍一下vim。
  在linux界,有两大编辑器最有历史。其一是vi,其二是emacs。vi现在已经演化成了vim,比当前的vi更为强大。vim和emacs是两种截然不同的东西,vim强调用简洁的命令来完成功能,无论是查找、替换、
  正则表达式匹配、编译、链接、排错、函数间跳转等等等等都在命令行中完成,并且它把方向键也集成在了hjkl四个键之上,可以说,用了vim基本上可以不用鼠标了:p emacs则是在功能强大上做文章,版本控制、模拟多种编辑环境、对文本进行各种操作,可谓之一个强大的文本处理系统。emacs是用诸如Ctrl+Alt+K 之类的组合键来控制的;vim则是用se(set 的缩写)等简洁命令来控制的。
   由于cygwin中只提供了vim(能不能自己装emacs我还没有试过),我们就先体验一下vim吧:p
  vim加载文本文件后分为命令模式和插入模式两种。插入模式,顾名思义就是输入编辑文本;命令模式,则是输入各种vim的控制命令,常用的有:
   i 进入编辑模式
   h 左移
   j 下移
   k 上移
   l 右移
   w 存盘
   q 退出
   ! 强调执行
  
  有些命令是可以组合使用的,如果你修改了某个文件,想存盘退出,则可以使用wq;如果你想放弃存盘,直接退出则可以使用q! 好了大家体验一下吧,记住:从编辑模式退回命令模式按"Esc",再按":",在输入指令,从命令模式进入编辑模式用i,初次使用vim肯定很难受,嘿嘿,不过用多了就习惯了,确实很省劲。
  
  我们编辑hello.c文件,输入:
  #include
  
  int main
作者: sky5    时间: 2008-1-19 20:15

cygwin的安装和简单配置来源:http://lifesinger.3322.org/blog/ 作者:lifesinger 时间:2006-12-01 点击: 635   windows和linux各有其优越性,可以安装在同一台电脑上,但切换要重启。同时拥有两台电脑,一台装win,一台装linux,自然非常好,但具备此条件的不多。本文介绍cygwin,它可以让你在win下拥有linux开发环境,并且不用切换。

  简单的讲述一下cygwin的安装和配置,入门级教程,还请各位高手指点一二。

  首先到http://www.cygwin.com下载setup.exe,接着建立安装目录,如X:\cygwin,将setup.exe放到此目录,




  BEGIN-> 点击setup.exe,Next->选Install from Internet,Next->填写Root Directory,如X:\cygwin,Next->填写Local Package Directory,如X:\cygwin\ftp,Next->

  选Direct Connection,Next->

  选一个较快的ftp,Next->

  到了关键步骤,如果仅想安装基本系统,直接Next;如果想完全安装,点击All旁边的旋转状图标,将Default切换至Install;如果和我一 样,仅想在命令行下写写程序,则只要将 gcc、make等开发工具选上,还有openssh等;选好后,Next->

  开始下载,Take a coffee break。回来后,Next->

  选择需不需要创建快捷方式。->END




  点击快捷方式或X:\cygwin\cygwin.bat打开控制台,如果是域用户,按照提示makepasswd和makegroup即可。下面说一些简单的调整和配置。

一、ssh的安装

  cygwin自带的控制台可调参数很少,舒适度较低。有没有办法用熟悉的PuTTY或SecureCRT来操控cygwin呢?办法有二:

  1、用PuTTYcyg。地址是http://gecko.gc.maricopa.edu/~medgar/puttycyg/。用法很简单,在配置对话框中,host name填 - 即可。Cygwin Bash Shell能做的,PuTTYcyg基本上都能实现,本地操作的话,极力推荐这款好软件。

  2、安装sshd,本机登陆。如果忘了安装OpenSSH,点击setup.exe,选上OpenSSH,再装一次即可。如果已安装,按照下面的操作继续:

  a、右键“我的电脑”->属性->高级->环境变量,在系统环境变量里添加变量CYGWIN,值为netsec tty,然后在Path里追加X:\cygwin\binb、打开cygwin控制台,输入ssh-host-config,一路yes,提示CYGWIN值时,输入netsec ttyc、启动sshd服务用: net start sshd 或 cygrunsrv –start sshd; 停止sshd服务用:net stop sshd 或 cygrunsrv –stop sshdd、用ssh yourname@127.0.0.1 或 ssh localhost登陆

  e、还可以继续安装配置sftp、scp等,详细参考: How to install OpenSSH sshd server and sftp server

  f、每次输入密码登陆太麻烦,可以用key验证: 用puttygen.exe生存密钥对,在~/下,建立.ssh目录,创建authorized_keys2文件,将公钥复制到这个文件,然后在 putty里指定私钥登陆,一劳永逸。

二、vim的简单配置

  将\usr\share\vim\vim64目录下的vimrc_example.vim复制到~/,重命名为_vimrc, 按照自己的喜好修改里面的配置即可,如打开高亮,选择喜欢的colorscheme

三、cygwin的中文显示和输入

  让bash命令行支持中文输入,vi ~/.inputrc,将下面几行的注释去掉:

set meta-flag on
set convert-meta off
set input-meta on
set output-meta on


  让ls命令支持中文显示,vi ~\.bashrc中,修改:

alias ls=’ls -hF –show-control-chars –color=tty’


  vim64的话,已经支持中文输入。

四、sdcv的安装配置

  坐在电脑前久了,屏幕太亮,辐射大,对身体不好。能不能在全黑的命名行模式下工作和学习呢?putty可以很好的全屏幕显示,sdcv则可以让你在命令行模式查找单词。

  安装: 到stardict主页下载sdcv和想要的字典,编译安装后,将字典解压,放到/usr/share/startdict/dic目录

  使用: sdcv word,就这么简单。小技巧: 可以在~/.bashrc里alias sdld=’sdcv -u langdao’等等,这样可以避免词典太多,直接sdld word就可以用郎道字典查询。

五、结语

  有了gcc、vim和sdcv,基本上就可以全屏幕工作了。老板来了,还以为你在linux下呢,嘿嘿

  cygwin下还有很多好玩的程序,慢慢发掘吧……
作者: sky5    时间: 2008-1-19 20:16

cygwin使用心得2007-12-28 17:171.在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 '^?'
作者: 清风皓月苔茵展    时间: 2008-1-19 20:30

提示: 作者被禁止或删除 内容自动屏蔽
作者: finalflower    时间: 2008-1-19 20:51

提示: 作者被禁止或删除 内容自动屏蔽
作者: hayem    时间: 2008-1-23 21:42

顶啊。学医的哪有这些东东可弄啊。。。羡慕
作者: yjhdeys    时间: 2008-1-24 18:39

直接用ubuntu不就可以啦吗




欢迎光临 世界之窗论坛 (http://bbs.theworld.cn./) Powered by Discuz! 7.2