Re tired_bird :
DOS环境也是一个系统终端的SHELL,只是相比*N*X的SHELL而言,功能和界面都要简化很多,以适应非专业用户群的需要。
在DOS环境中消息的传递有以下几种途径:
1,文件
利用>,>>,<这三个重定向符号,实现DOS命令消息的传入和传出,文件作为一个比较“稳固”的中间媒介而存在,而且其对信息的容量和形式没有太多的限制。
在DOS下所有的内外部命令都支持文件的输入、输出重定向,因为此特性这是由系统直接支持的,不过相比众多可以发送消息的命令而言,可以接收消息的命令就很少了,常用的大概有FIND,SORT,MORE,DEBUG,QBASIC,EDLIN等,当然,第三方软件和工具中这一类产品就相当丰富了。
2,管道
命令之间消息的直接传递使用管道符号 | 。
所有支持重定向的命令也都同样支持管道,因为“管道“的本质就是文件的输出和输入,消息从一个命令的输出端流入管道,然后通过这个管道文件,再流入另一个命令的输入端,只不过消息的流入和流出、管道文件的创建和销毁都是由系统管理,我们通常情况下无法观察到而已。
3,环境变量
环境变量是作为命令消息的快速传递中介而应用的,相比文件,它的生成和销毁都要高效的多,但是相对的,其容量也就有限的多。
DOS下的环境变量都是全局性的。如果在DOS环境中加载EXE类的应用程序(包括DOS SHELL),就会创建新的环境空间,并且继承父环境的所有变量,随着应用程序的退出,新的环境空间也被销毁,在其中所做的修改也不会影响父环境。比较特殊的是BAT,它在执行时并不会创建新的环境空间,所以它的变量空间仍然是DOS环境的全局空间。
4,命令行参数
命令行参数时传递短小消息最快的方法,使用方法类似于*n*x。
但是它的限制也更多,除了容量上的限制(主要取决于命令行缓冲区的大小,这在dos系统的不同版本中都有所不同;其次取决于命令本身处理参数时所创建的变量空间的大小),还有字符范围的限制(像管道字符、重定向字符、参数分割符、字符串切分符等都不能正常传入)