版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/canlets/article/details/28646115

对于 UNIX 本身,也有各种称呼。

IBM® 大型机用户说各种带字母 “z” 的行话,比方 IBM z/OS® 和 System z9 Virtual Machine (z/VM)。嵌套系统开发者使用 eCos 这个词;在聊天中还会提到其它很多风格的 UNIX。比方 Linux®、FreeBSD、Sun Solaris 和 Mac OS X。现代信息技术使用各种各样的方言。简直就像是圣经中巴别塔的故事。

当然,也有不少人说 Windows 术语,虽然大多数人仅仅掌握 “指向和单击” 这种简单词汇。经过 20 年的发展,大多数 Windows 用户已经忘了古老的 DOS 术语。

可是,与 UNIX shell 相比。Windows COMMAND有用程序的功能实在非常差;因此,UNIX 用户通常觉得 Windows 是一种让人灰心丧气的平台。

对于习惯于使用丰富的命令行工具集的 UNIX 软件开发者来说。Windows 尤其别扭。对于 UNIX 开发者来说。使用 Windows 简直就像是到了陌生的外国。

幸运的是,Cygwin(见
參考资料)在 Windows 环境中提供大家熟悉的一片天地,就像是美国人在法国找到了麦当劳。

Cygwin 是一个用于 Windows 的类 UNIX shell 环境。 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供的很多特性;以及 Bash shell 的改写版本号和很多 UNIX 有用程序,它们提供大家熟悉的 UNIX 命令行界面。前一个组件是一个 Windows 动态链接库 (DLL)。后一个组件是一组基于
Cygwin DLL 的程序,当中很多是用未经改动的 UNIX 源码编译的。它们合在一起提供大家熟悉的 UNIX 环境。

这篇文章我们要安装 Cygwin,讨论它的命令行界面 (CLI),并构建标准 Cygwin 发行版中未包括的开放源码。以此体会把 UNIX 应用程序(至少是一部分 UNIX 应用程序)迁移到这个模拟环境是多么easy。

安装 Cygwin

与这里介绍的其它软件不同,Cygwin 使用 Windows 安装程序。

Cygwin setup.exe 文件能够又一次安装软件,能够加入、改动或升级 Cygwin 配置的组件。

在 Windows 系统上打开浏览器,通过訪问 http://cygwin.com/setup.exe 下载 Cygwin 安装程序。安装程序本身非常小(大约 600KB),由于大多数 Cygwin 软件是在安装过程中下载的。完毕下载之后,依照下面步骤安装 Cygwin:

  1. 执行安装程序。图 1 显示 Cygwin 欢迎屏幕。

    图 1. 在安装 Cygwin 期间出现的第一个对话框

  2. 单击 Next 进入下一个屏幕。选择要执行的安装类型。
  3. 单击 Install from Internet。

  4. 单击 Next。然后选择一个安装文件夹。

配置安装的窗体见图 2。

图 2. Cygwin 安装选项

在大多数情况下,推荐的安装选项是合适的,也能够进行定制。可是要注意几点:

  • 不要在 Windows 系统的根文件夹(比方 C:)中安装 Cygwin。最好把 Cygwin 安装在它自己的子文件夹中,比方默认文件夹(C:\cygwin)或 C:\Program Files\cygwin。

    (您选择的目标文件夹将成为模拟的 UNIX 环境的根文件夹/。

    比如,假设在 C:\cygwin 中安装,那么虚拟的 /usr/bin 实际上是 C:\cygwin\usr\bin)。

  • 对于 Install For 选项,不要选择 Just Me。
  • 把 Default Text File 类型设置为 Unix,从而尽可能提高与其它 UNIX 机器上存储的现有文件的兼容性。

         5. 单击Next。

在下一个窗体中,选择一个存储 Cygwin 所需的数据的文件夹。不要选择前一步中选择的 Cygwin 文件夹。

假设可能的话,应该在有至少 1GB 空暇空间的驱动器上创建或选择一个文件夹。

          6. 再次单击 Next,选择使用的 Internet 连接类型。通常应该选择 Direct Connection。

          7. 再次单击 Next。

稍等一会儿。Cygwin 会下载当前的镜像网站列表,让您选择一个镜像网站,见图 3。假设不确定应该选择哪个网站。就选择地理位置比較近的网站。

图 3. 选择您觉得可靠的或地理位置比較近的安装网站

经过短暂的延迟之后。安装程序显示可用的类别和包的完整列表。图 4 显示一个类别的部分内容。

单击加号 (+) 展开相应的类别;单击
“循环” 标志在 Skip(忽略此包)和包的全部可用版本号之间循环。假设 Cygwin 提供一个有用程序的多个版本号,应该选择满足您的需求的实例。顺便说一下,假设选择 B 列,就会下载二进制包;选择 S。也会下载源码。

图 4. 选择最适合须要的包和实例

在 Cygwin 中可用的包超过 1,000 个。所以应该仅仅选择您须要的类别和包。(安装全部 Cygwin 包会占用超过 800MB 的磁盘空间)。以后随时能够加入整个类别或单独的包:仅仅需又一次执行 Cygwin 安装程序。

(还能够在不论什么时候用相同的安装程序删除或更新包)。搜索 Cygwin 包列表(參见
參考资料),检查您喜欢的 UNIX 有用程序是否在 Cygwin 中可用。

8. 选择您须要的工具之后,单击 Next,下载过程開始!

进度条分别反映每一个包的下载进度、总下载进度和磁盘使用量。

图 5 是在我的測试计算机上在安装期间截取的屏幕图。

图 5. Cygwin 下载大量软件,所以请耐心等待

最后,安装程序安装软件并(可选地)在 Start 菜单和桌面中加入快捷方式。单击 Finish

9. 通过使用 Start 菜单或双击 Cygwin 图标(假设加入了这些快捷方式的话)。启动 Cygwin;也能够执行 Cygwin 文件夹中的 Cygwin 脚本(比方 C:\cygwin\Cygwin.bat)。

图 6 显示第一次启动 Cygwin 时的情况:它创建您的主文件夹,执行 shell 启动文件,显示提示。如今能够执行 UNIX 命令了!

图 6. 如今能够在 Windows 中使用 UNIX 命令了!

 

比如,试一下 ls -a或 type touch。后一个命令表明 touch是可执行文件 /usr/bin/touch。

在 Windows 中发挥 UNIX 的优势(反之亦然)

Cygwin 在 Windows 中差点儿完整地模拟一个 UNIX shell。实际上。它把这两种操作系统非常好地结合在一起了。

比如。能够执行 df -h命令显示 “UNIX” 机器上的空暇磁盘空间。图 7 显示结果。

图 7. 是 Windows 上的 UNIX 文件系统。还是 UNIX 上的 Windows 文件系统?

正如前面提到的。Cygwin 安装文件夹作为虚拟 UNIX 系统的根文件夹。Cygwin 把安装文件夹中的子文件夹映射到
UNIX 文件夹。它以单独的卷的形式提供 Windows 驱动器。比方 /cygwin/c。

能够使用这种虚拟路径启动 Windows 程序。

请尝试输入

/cygwin/c/Program\ Files/Internet\ Explorer/IEXPLORE.EXE

从命令行启动 Windows Internet Explorer®。(还能够使用 Tab 键自己主动展开路径的元素)。

顺便说一句,假设要把 Windows 路径名转换为等效的 UNIX 路径名或者相反。能够试试内置命令

cygpath。在默认情况下,cygpath产生 UNIX 路径名。使用-w选项产生 Windows 路径。

$ cygpath -w /cygwin/c/Program\ Files/Internet\  Explorer/IEXPLORE.EXE c:\Program Files\Internet Explorer\IEXPLORE.EXE

还有帮助沟通这两个环境的其它特性:

  • Cygwin 提供它自己的 lpr(/usr/bin/lpr 而不是 Windows 的 LPR.EXE)。能够直接从模拟的 UNIX 环境进行打印。仅仅需把 PRINTER 设置环境变量为 \\server\printer_name 或 //server/printer_name 这种 Cygwin UNC;前向斜杠和反向斜杠都能够。在 Cygwin 中的其它地方也是如此。

  • 在 Cygwin 中用 ln -s创建的符号链接在 Windows 中被解释为快捷方式。相同,Windows 快捷方式在 Cygwin 中被解释为符号链接。因此,能够使用 Windows 快捷方式带參数启动 UNIX 命令。
  • 由于 Cygwin 提供完整的 Bash shell,所以能够使用上述的全部兼容特性(和其它特性)编写 UNIX shell 脚本来维护 Windows。

    比如。能够使用 UNIX find

  • 在驱动器上搜索数据。

    请注意一点:在 Windows 文件名称中常用空格。为了保持完整的文件名称(请记住,UNIX 參数以空格分隔),一定要使用 find -print0和 xargs -0。

      见图 4。展开 Devel 类别。使用循环控件选择下面包的最高版本号:

  • autoconf2.1

  • automake1.10

  • binutils

  • gcc-core

  • gcc4-core

  • gdb

  • pcre

  • pcre-devel

做出选择之后(为了满足依赖性,可能会自己主动选择其它包),单击 Next 開始更新。与前面一样,下载和安装过程须要一定的时间(开发包往往相当大)。
參考资料

结束语

Cygwin 并非完美的 UNIX 模拟环境,但已经相当好了。

核心组件的文档非常完好。并且特别方便,它们介绍了模拟 DLL 中的限制和安全风险。

Cygwin 最优秀的特性可能是它与 Windows 的集成。

使用 Cygwin 和它的 UNIX 命令行来操纵系统能够大大提高生产力。

建议在您的 shell PATH 变量中包括 Windows 的 Program Files 中的子文件夹。这样仅仅需输入程序名。就能够启动路径中的不论什么二进制程序。

更棒的是。Cygwin 能够在同一个窗体中管理多个作业。

按 Control-Z 能够暂停正在执行的作业。输入 bg和fg分别在后台和前台执行作业;输入 jobs管理作业列表。当然,Cygwin 还能够对输入和输出进行重定向,能够通过管道把一个命令的输出发送给还有一个命令。

Cygwin安装与使用入门的更多相关文章

  1. 通过cygwin安装openSSH

    openSSH的安装是学习hadoop必不可少的一步,如果ssh装不好,hadoop的安装会进行不下去.本人初学hadoop时发现以前安装ssh走了一些弯路,现在又有了一些认识,所以重写了这篇日志,供 ...

  2. cygwin安装

    我安装的是cygwin2.5.2,相关下载:https://cygwin.com/setup-x86_64.exe 先安装cygwin,x86_64版本,安装时选择库(gcc-core.gcc-c++ ...

  3. sass、less和stylus的安装使用和入门实践

    刚 开始的时候,说实话,我很反感使用css预处理器这种新玩意的,因为其中涉及到了编程的东西,私以为很复杂,而且考虑到项目不是一天能够完成的,也很少是 一个人完成的,对于这种团队的项目开发,前端实践用c ...

  4. Linux上安装使用boost入门指导

    Data Mining Linux上安装使用boost入门指导 获得boost boost分布 只需要头文件的库 使用boost建立一个简单的程序 准备使用boost二进制文件库 把你的程序链接到bo ...

  5. Cygwin安装与配置

    Cygwin可以在windows环境下模拟Linux系统,而且可以重用Linux下面丰富的脚本工具.windows的cmd太弱了.Cygwin是由Cygnus(天鹅座) Solution公司开发,不过 ...

  6. Cygwin安装时,选择163的源后出错:Unable to get setup.ini from <http://mirrors.163.com/cygwin/>

    [问题] 折腾: [记录]Cygwin下把make从v3.82换成v3.81 期间,选择了163的源,结果出错: Cygwin Setup Unable to get setup.ini from & ...

  7. cygwin安装与使用

    cygwin安装很简单,下载运行setup.exe程序,一步一步就可以了. 具体安装细节参考:http://www.33lc.com/article/7276.html 安装完成后有如下问题: 在cm ...

  8. Oracle安装及使用入门

    新手Oracle安装及使用入门   一.安装Oracle Step1 下载oracle压缩包并解压到同一文件夹下面 Step2 双击setup.exe进行安装 Step3:进入如下界面配置: 邮箱可不 ...

  9. window模拟linux环境-cygwin安装

    cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,非常有用.通过它,你就可以在不安装linux的情况 ...

随机推荐

  1. codeforces 1042c// Array Product// Codeforces Round #510(Div. 2)

    题意:给出一个数组,2种操作:.1:x*y然后x消失,2:除掉x(2操作最多只能进行一次).问最大的结果的一种操作方式.逻辑题,看能不能想全面. 1先数好0,正,负的数量,zero,pos,neg.如 ...

  2. WebView 实现JS效果和a标签的点击事件

    目前很多android app都可以显示web页面的界面,嵌入式开发,这个界面一般都是WebView这个控件加载出来的,学习该控件可以为你的app开发提升扩展性. 先说下WebView的一些优点: 可 ...

  3. mysql 视图,事务,存储过程,触发器

    一 视图 视图是一个虚拟表(非真实存在),是跑到内存中的表,真实表是硬盘上的表.使用视图我们可以把查询过程中的临时表摘出来,保存下来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sq ...

  4. MySql 定时完成备份

    <?php /*定时备份数据库文件*/ //设置时区 date_default_timezone_set('PRC'); //创建目录 $dirname = 'e:/mysql_dump/'.d ...

  5. 牛客练习赛23-A/B/C/D/F

    https://www.nowcoder.com/acm/contest/156#question 链接:https://www.nowcoder.com/acm/contest/156/A来源:牛客 ...

  6. page上BeanId与ActionType中的ParameterId

    今天遇到一件有意思的异常. 一个基于EO的VO在页面加载进来之后就CreateRow了一行数据,主键HeaderId也相应的插入了值,但是在保存的时候,老是报HeaderId不能为空的异常. 经查,页 ...

  7. CMD模拟http请求

    搭建环境 前提是在win7中开启telnet服务 开启方法请参考:http://jingyan.baidu.com/article/870c6fc3cd6fa9b03fe4bee4.html 打开Te ...

  8. python学习笔记(八)---关于Django的下载以及环境配置

    下载链接: https://www.djangoproject.com/download/ (建议选择 1.6版本) 然后安装 Django下载后为压缩包,解压缩跟Python放在同一个根目录,在do ...

  9. 对va_list; va_start ; va_end ;vsprintf理解(转)

    以下为转载内容: int printf(const char* fmt, ...) { va_list args; int i; //1.将变参转化为字符串 va_start(args,fmt); v ...

  10. json 与字符串相互转换,

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...