如果您是本专栏的常规读者,那么您现在可能已经掌握了许多UNIX语言。 诸如“用管道输送输出”,“终止过程”和“使用通配符”之类的口语(对初学者来说很奇怪)应该是熟悉和舒适的。
las,UNIX不是机器室中唯一使用的语言。 IBM®大型机人员会说“ z”,例如IBM z /OS®和System z9虚拟机(z / VM)。 在eCos中激怒了嵌入式系统开发商jabber; 还有其他人则在各种UNIX系统中闲聊,例如Linux®,FreeBSD,Sun Solaris和Mac OSX。现代信息技术是后来的Babel。
当然,也有很多人会说Windows,但大多数人只精通Windows的点击式键盘。 经过20多年的修订,大多数Windows用户都忘记了神秘的DOS方言。
确实,与UNIX Shell相比,Windows COMMAND
实用程序的功能严重不足。 因此,UNIX用户通常会发现Windows是一个令人沮丧的平台。 此外,对于习惯于使用广泛而丰富的命令行工具集的UNIX软件开发人员而言,Windows可能尤其令人烦恼。 对于UNIX开发人员而言,使用Windows类似于访问陌生而陌生的土地。
幸运的是,Cygwin(请参阅参考资料 )在Windows中提供了一个熟悉的目的地,例如在法国找到麦当劳。 (Royale加奶酪,有人吗?)
Cygwin是Windows的类UNIX外壳环境。 它由两个组件组成:UNIX API库,用于模拟UNIX操作系统提供的许多功能,以及对Bash shell和大量UNIX实用程序的改编,以提供熟悉的UNIX命令行界面。 前一个组件作为Windows动态链接库(DLL)提供。 后一个组件是基于Cygwin DLL的单个程序的集合(许多程序是从UNIX修改而来的,其源代码未更改)。 两者结合在一起,可为您提供UNIX主目录(甜蜜的主目录)的所有便利。
在本月的“ Speaking UNIX”专栏中,您将安装Cygwin,探索其命令行界面(CLI),并构建标准Cygwin发行版中未包含的开源软件,以体验将(至少某些)UNIX应用程序移植到Linux上的便捷性。仿真环境。
安装Cygwin
与此处介绍的其他软件不同,Cygwin使用Windows Installer。 Cygwin setup.exe文件会重新安装该软件,并在您要添加,更改或升级Cygwin配置组件的任何时间重新使用。
在Windows系统上打开浏览器,然后指向http://cygwin.com/setup.exe下载Cygwin安装程序。 安装程序本身很小(大约600KB),因为随后在安装过程中下载了大量Cygwin软件。 下载成功后,请执行以下步骤来安装Cygwin:
- 运行安装程序。 图1显示了Cygwin欢迎屏幕。
图1. Cygwin安装过程中出现的许多对话框中的第一个
- 单击下一步前进到下一个屏幕,然后选择要执行的安装类型。
- 单击“ 从Internet安装” 。
- 单击下一步 ,然后选择一个安装目录。
图2显示了用于配置安装的窗口。
图2. Cygwin安装选项
在大多数情况下,建议的安装选项是合适的,但是您可以自定义以下几点:
- 不要将Cygwin安装在Windows系统的根目录中,例如C:最好将Cygwin安装在其自己的子目录中,例如默认目录C:\ cygwin或C:\ Program Files \ cygwin。 (无论选择什么目标目录,都将成为仿真UNIX环境的根目录
/
。例如,如果安装到C:\ cygwin,则实际上可以在C:\ cygwin中找到虚拟的/ usr / bin \ usr \ bin。) - 不要为“ 安装为”选项选择“ 仅我 ”。
- 将“ 默认文本文件”类型设置为Unix,以最大程度地与现有文件和其他UNIX计算机上存储的文件兼容。
- 不要将Cygwin安装在Windows系统的根目录中,例如C:最好将Cygwin安装在其自己的子目录中,例如默认目录C:\ cygwin或C:\ Program Files \ cygwin。 (无论选择什么目标目录,都将成为仿真UNIX环境的根目录
- 单击下一步 。
在出现的窗口中,选择一个目录,用于存储Cygwin所需的数据。 不要选择在上一步中选择的Cygwin目录。 如果可能,在具有至少1GB可用空间的驱动器上创建或选择目录。
- 再次单击“ 下一步” ,然后选择您使用的Internet连接类型。 直接连接通常是适当的。
- 再次单击下一步 。
稍后,Cygwin将下载其当前镜像站点列表,并提示您选择一个,如图3所示。如有疑问,请选择一个紧邻的站点。
图3.选择您认为可靠或紧邻的安装站点
短暂延迟后,安装程序将显示可用类别和软件包的完整列表。 图4显示了部分目录。 单击加号(
+
)展开相应的类别; 单击“循环”以在“跳过”(忽略该程序包)和相应程序包的所有可用版本之间循环。 如果Cygwin提供了实用程序的多个版本,请选择满足您要求的实例。 顺便说一句,如果选择了B列,则下载二进制包; 如果选择了S,则也会下载源。图4.选择最适合您需求的软件包和实例
Cygwin中提供了1,000多个软件包,因此请仅选择所需的类别和软件包。 (安装所有Cygwin捆绑软件会占用800MB以上的磁盘空间。)毕竟,将来您始终可以添加整个类别或单个软件包:只需重新运行Cygwin安装程序即可。 (您也可以使用同一安装程序随时删除或更新软件包。)要快速确定Cygwin中是否提供您喜欢的UNIX实用程序,请搜索Cygwin软件包列表(请参阅参考资料 )。
- 选择所需工具后,单击“ 下一步” ,下载过程开始!
状态栏分别反映每个软件包下载,总体下载进度和磁盘使用情况。 图5是在我的测试计算机上安装期间拍摄的快照。
图5. Cygwin下载了大量软件,因此请耐心等待
最后,安装程序将安装该软件,并(可选)将快捷方式添加到“开始”菜单和桌面。 点击完成 。
- 通过使用“开始”菜单或双击Cygwin图标(如果已安装这些快捷方式)来启动Cygwin,或者可以执行在Cygwin目录(例如C:\ cygwin \ Cygwin.bat)中找到的Cygwin脚本。
图6显示了Cygwin第一次启动:它创建您的主目录,为shell启动文件添加种子,并显示提示。 您现在可以运行UNIX命令!
图6. Presto! 现在您可以在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 InternetExplorer®。 (您也可以使用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环境变量设置为Cygwin UNC,例如\\ server \ printer_name或// server / printer_name,就可以像在Cygwin的所有其他部分中一样使用斜线方向。 - 在Cygwin中用
ln -s
创建的符号链接在Windows中被解释为快捷方式。 反过来,Windows快捷方式被解释为符号链接。 此外,您可以使用Windows快捷方式来启动带有参数的UNIX命令。 - 并且由于您拥有完整的Bash Shell,可以使用所有上述兼容性功能(以及其他功能)来编写UNIX Shell脚本来维护Windows!
例如,您可以使用UNIX
find
驱动器上的数据。 提示:Windows文件名中通常使用空格。 要保留整个文件名(请记住,UNIX参数由空格分隔),请确保使用find -print0
及其配套文件xargs -0
。
如何更新和扩展您的Cygwin
如开头所述,您可以通过(重新)运行Cygwin安装程序来随时添加,删除和更新Cygwin类别和软件包。 让我们添加一些软件开发包,以准备从源代码构建其他代码,就像通常在传统UNIX系统上所做的那样。
再次运行Cygwin setup.exe应用程序,并进入初始对话框,直到返回到Select Packages窗口,如图4所示。 展开“开发”类别,然后使用“回收站”控件选择以下编号最高的版本:
-
autoconf2.1
-
automake1.10
-
binutils
-
gcc-core
-
gcc4-core
-
gdb
-
pcre
-
pcre-devel
进行所有选择(可能会自动选择其他软件包来满足依赖性)之后,单击“ 下一步”开始更新。 和以前一样,下载和安装过程可能会花费一些时间-开发包往往很大。
同时,打开浏览器窗口,然后指向http://ftp.gnu.org/gnu/wget/wget-1.11.4.tar.gz,以下载GNU wget
实用程序的最新源代码。 (如果您以前从未使用过它,则wget
是一个命令行工具,可以下载几乎所有内容。有关此工具的更多信息,请参见参考资料 )使用Cygwin,将文件复制到Cygwin的主目录中,并展开tarball 。 清单1显示了压缩包的内容。
清单1. wget-1.11.4.tar的内容
$ cp /cygdrive/c/Documents\ and\ Settings/Martin/My\ Documents/wget-1.11.4.tar ~
$ tar xzvf wget-11.4.tar
wget-1.11.4/
wget-1.11.4/AUTHORS
wget-1.11.4/NEWS
wget-1.11.4/COPYING
wget-1.11.4/configure.bat
wget-1.11.4/ChangeLog
wget-1.11.4/ChangeLog.README
wget-1.11.4/msdos/
wget-1.11.4/msdos/ChangeLog
wget-1.11.4/msdos/Makefile.DJ
...
wget-1.11.4/src/cookies.c
wget-1.11.4/src/http.h
wget-1.11.4/src/log.h
wget-1.11.4/src/sysdep.h
wget-1.11.4/src/alloca.c
wget-1.11.4/src/getopt.c
wget-1.11.4/src/gnu-md5.h
wget-1.11.4/src/ftp.c
wget-1.11.4/config.sub
wget-1.11.4/config.guess
$
Cygwin的下载和安装过程完成后,单击“ 完成” 。 现在,您应该准备从源代码构建wget
实用程序。
$ cd wget-1.11.4
$ ./configure
configure: Configuring for GNU wget 1.11.4
...
creating po/Makefile
$ make
gcc -I. ...
$ make install
...
/usr/bin/install -c -m 644 ./wget.1 /usr/local/share/man/man1/wget.1
$ type wget
/usr/local/bin/wget
要测试新实用程序,请在Cygwin中运行它,然后下载wget
源代码:
$ /usr/local/bin/wget http://ftp.gnu.org/gnu/wget/wget-1.11.4.tar.gz
稍后,您应该有一个新的源tarball。 使用Cygwin安装程序从Cygwin存储库中提取实用程序是最简单的,但是您可以在Cygwin中构建要下载的源代码或自己的源代码。 Cygwin提供了全套的UNIX开发工具,包括最流行的脚本语言。
如果没有像Microsoft VisualStudio®这样的工具,您甚至可以使用Cygwin中提供的UNIX编译器和工具来构建本机Windows WIN32应用程序。 (这些应用程序将无法在UNIX上运行。要建立一个Windows应用程序在Unix上运行,考虑酒。请参阅相关主题以获取更多信息。)
熟悉,强大且有用
Cygwin并不是UNIX的完美仿真,但这是一个令人欣慰的替代。 核心组件的文档很好,尤其是即将出版,描述了仿真DLL中的限制和安全风险。 如果要将复杂的UNIX软件包移植到Cygwin,请查阅《开发人员指南》(请参阅参考资料 )以评估Cygwin对API需求的支持。
Cygwin的最佳功能也许是与Windows的集成。 为了提高生产率,请使用Cygwin并使用其类似UNIX的命令行来操纵系统。 一个建议:扩展外壳程序的PATH变量,使其包含在Windows的“程序文件”中的子目录,从而只需输入名称即可在路径中启动任何二进制文件。
更好的是,Cygwin可以在同一窗口中管理多个作业。 按Control-Z暂停正在运行的作业; 输入bg
和fg
分别在后台和前台运行作业; 并输入jobs
以管理作业列表。 当然,Cygwin还将输入和输出重定向,并将输出从一个命令传递到另一个命令。
Cygwin:比起Royale奶酪更好。
翻译自: https://www.ibm.com/developerworks/aix/library/au-spunix_cygwin/index.html