对话 UNIX: 在 Windows 上使用 Cygwin【转】
Cygwin 在 Windows 上提供一个完整的 UNIX shell(从 awk 到 zcat)
如果您是本专栏的忠实读者,应该已经熟悉了许多 UNIX 行话。“用管道重定向输出”、“杀死进程” 和 “使用通配符” 等行话对于新手来说很奇怪,但是您应该很熟悉这些说法了。
单击 Next 进入下一个屏幕,选择要执行的安装类型。单击 Install from Internet。单击 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 机器上存储的现有文件的兼容性。单击 Next。在下一个窗口中,选择一个存储 Cygwin 所需的数据的目录。不要选择前一步中选择的 Cygwin 目录。 如果可能的话,应该在有至少 1GB 空闲空间的驱动器上创建或选择一个目录。
再次单击 Next,选择使用的 Internet 连接类型。通常应该选择 Direct Connection。再次单击 Next。稍等一会儿,Cygwin 会下载当前的镜像站点列表,让您选择一个镜像站点,见图 3。如果不确定应该选择哪个站点,就选择地理位置比较近的站点。
图 3. 选择您认为可靠的或地理位置比较近的安装站点

经过短暂的延迟之后,安装程序显示可用的类别和包的完整列表。图 4 显示一个类别的部分内容。单击加号 (+) 展开对应的类别;单击 “循环” 标志在 Skip(忽略此包)和包的所有可用版本之间循环。如果 Cygwin 提供一个实用程序的多个版本,应该选择满足您的需求的实例。顺便说一下,如果选择 B 列,就会下载二进制包;选择 S,也会下载源代码。
图 4. 选择最适合需要的包和实例

在 Cygwin 中可用的包超过 1,000 个,所以应该只选择您需要的类别和包。(安装所有 Cygwin 包会占用超过 800MB 的磁盘空间)。以后随时可以添加整个类别或单独的包:只需重新运行 Cygwin 安装程序。(还可以在任何时候用相同的安装程序删除或更新包)。搜索 Cygwin 包列表(参见 参考资料),检查您喜欢的 UNIX 实用程序是否在 Cygwin 中可用。
选择您需要的工具之后,单击 Next,下载过程开始!进度条分别反映每个包的下载进度、总下载进度和磁盘使用量。图 5 是在我的测试计算机上在安装期间截取的屏幕图。
图 5. Cygwin 下载大量软件,所以请耐心等待

最后,安装程序安装软件并(可选地)在 Start 菜单和桌面中添加快捷方式。单击 Finish。
通过使用 Start 菜单或双击 Cygwin 图标(如果添加了这些快捷方式的话),启动 Cygwin;也可以执行 Cygwin 目录中的 Cygwin 脚本(比如 C:\cygwin\Cygwin.bat)。图 6 显示第一次启动 Cygwin 时的情况:它创建您的主目录,执行 shell 启动文件,显示提示。现在可以运行 UNIX 命令了!
图 6. 现在可以在 Windows 中使用 UNIX 命令了!

例如,试一下 ls -a 或 type touch。后一个命令表明 touch 是可执行文件 /usr/bin/touch。
正如 前面提到的,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 路径。
Martin Streicher 是一位 Ruby on Rails 自由开发人员和 Linux Magazine 的前主编。Martin 毕业于 Purdue University 并获得计算机科学学位,从 1986 年起他一直从事 UNIX 类系统的编程工作。他喜欢收集艺术品和玩具。
建议