`

从Unix的echo与Dos的type之间的区别,看操作系统之间的软件设计哲学的不同

 
阅读更多

write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie

讨论新闻组及文件

本文其实仅仅是写 《各种进程创建方式比较总结(MacOS, Win32, Linux, Qt, Python…………)》一文时的过度发挥,发现插入大段无关文字有点问题,就给剥离出来了,也算一次文章的重构。。。。。
从Unix的echo 命令与Dos的type命令,从基本使用上来说,都是用于显示文件内容的,但是大致的使用一致,却有一些细微的差别,这些细微的差别,让我挺有感触,于是 借题发挥了,也算无聊一把。但是,毫不夸张的说,两个小命令,展示了两个不同的世界。

比较手段

1, 最简单的创建一个带参数的进程,以显示当前目录下的文件a,文件b的内容为例。
2,展示进程的输出重定向使用,以将当前目录下的文件a,文件b定向到文件c中为例。
3,展示进程间的管道通信技术,以将当前目录下的文件a,文件b通过管道传递给另外一个输出的进程,并且显示。
(以下简称Test1,2,3)。
以上述三个操作,显示echo及type的不同。

Test1:

1. 从最简单的开始吧,先以Unix下的Bash为例了。

jtianling$ echo "I'm File A." > a
jtianling$ echo "I'm File B." > b
jtianling$ ls
a b
jtianling$ cat a
I'm File A.
jtianling$ cat b
I'm File B.
jtianling$ cat a b
I'm File A.
I'm File B.
jtianling$
好了,cat a b,这样简单的调用,进程创建完成,参数输入完成,显示正常。


Test2:

2.输出重定向,对于 Shell来说实在是小case,那简直可以说是其原生的。

TianLings-MacBook:test jtianling$ cat a b > c
jtianling$ cat c
I'm File A.
I'm File B.
jtianling$
cat a b > c一句而已。


Test3:

3.管道,还是Shell饭碗里 面的内容。

jtianling$ cat a b | cat
I'm File A.
I'm File B.
cat a b | cat还是一句代码而已。


DOS中type的对比:

Test1:


DOS 下,type命令也可以完全按照上述方式尝试一次:

Test1,基本可用,也就是输出嘛,但其实,仔细看看DOS下的 type命令,会发现其实输出有些许不同:

F:/MySrc/TestProcess>type a b

a


I'm File A.

b


I'm File B.


直观来看,type a b时自动的将a,b文件按文件名给你排下版,多人性化啊?呵呵,但是,很明显的可以看出DOS开发者的文化(MS特有?)与UNIX社群的文化差 异.UNIX中提倡命令行程序不要输出废话(比如上面的a,b及排版),这样才能够通过管道或者重定向更多的重复被其他程序使用,DOS似乎提倡给人直接 看.......


Test2:

实践发现,虽然直接的输出会有额外输出,但是type命令的对于重 定向时进行了处理:

F:/MySrc/TestProcess>type a b > c

a



b



F:/MySrc/TestProcess>type c
I'm File A.
I'm File B.

会发现重定向后的结果与cat a b > c完全一样.但是a,b的格式还是输出了,说明a,b格式的输出根本走的不是标准输出通道。那剩下什么?标准错误通道。。。我们测试一下。

>type a b 2>d
I'm File A
I'm File B

>type d

a



b



>


果 然如此,当把错误通道重定位到文件d中时,可以看到输出了精简的输出,并且可以看到d中的内容就是附加的输出。用较为复杂的hack手段,(利用错误输出 来输出正常的信息,总之不是什么好手段)实现其实不算太必要的但是有点用的任务,是好是坏,就看个人意见了。


Test3:

会 发现,type其实是无法接受标准输入的,也就是,无法形成 | type的链式调用,就像cat a b | cat一样.

这样会导致 Test3无法使用type完成。这也算文化差异吧......因为Unix的Shell使用的习惯,管道及重定位几乎是命令行必备的协作工 具,DOS/Windows程序没有此传统,所以没有实现,也就可以理解了。更进一步的说,Win32 API甚至没有对管道及输入输出重定向有任何直接的支持,因为似乎根本就不在意,而POSIX的pipe,popen对于相关使用的支持却能做到非常方便 快捷。(当然,其实Windows中也有POSIX的函数的一些实现,就包括pipe,popen,但是命名前加下滑线)


小 结:

所以,对于type命名来说,描述为:TYPE Displays the contents of a text file.

对 于cat命令,man中描述为:Concatenate FILE(s), or standard input, to standard output.

而且,查查cat的参数就会发现,cat其实还有很多定制功能,但是type呢?估计只有/?参数 吧............

因为Unix以前相当依赖于Shell,(以前只有Shell),加上其文化的影响,加上工作需要,每个 Shell命令都是比较强大,并且协作性非常好(因为那古老的规则),其中最最典型的就是find,grep有意者去尝试一下就知道了。另外,其实说命令 的话。。。。那perl,python算不算一个命令呢?。。。。。。呵呵,扯远了。




原创文章作者保留版 权 转载请注明原作者 并给出链接

write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie

分享到:
评论

相关推荐

    VC++Dos 命令接口2(操作系统课程设计)

    设计任务 (1)为Windows操作系统建立兼容的DOS命令接口,文件与目录命令 (2)具体命令:DIR,RD,CD,MD,DEL,MOVE,REN,XCOPY,命令格式可参考Windows的CMD.EXE或MS-DOS提供的命令格式 (3)设计命令的名称,参数等...

    UNIX操作系统设计(英文版)

    UNIX操作系统设计(英文版).

    windows下UNIX2DOS

    操作环境:Microsoft桌面操作系统/dos下操作 使用方法:拖放要转换的文本文件至输入窗口中,选择要转换的方式(DOS2UNIX或UNIX2DOS),点转换即可直接转换 注:支持命令提示符下参数操作 功能: unix文本文件与...

    UNIX操作系统设计(电子书)

    UNIX操作系统设计(电子书),对着方面有兴趣的小伙伴可以了解一下

    Unix操作系统设计

    Unix操作系统设计,原书名The Design of the UNIX Operating System

    UNIX操作系统概述

    Unix操作系统自1969年问世以来,至今已有20年的历史,它的第一版于1969年在Bell实验室产生,1975年对外公布,1976年以后在Bell实验室外广泛使用。目前这个操作系统已经广泛移植在微型计算机,小型计算机,工作站,...

    UNIX操作系统(Solaris,AIX,UNIX).pdf

    UNIX操作系统(Solaris,AIX,UNIX).pdf

    dos2unix,unix2dos,mac2unix,unix2mac 64bit&32bit

    dos2unix,unix2dos,mac2unix,unix2mac

    [原创]unix2dos dos2unix 批量 windows升级版

    unix2dos批量转换工具(双向) MS桌面版 前一版描述较不祥细,以至于很同朋友不知道可以选择多个文件拖放,故在此多啰嗦几句。 注明:1、窗口支持拖放,单文件或多文件同时拖放均可 2、新版本添加文件列表窗口中点...

    aix下面txt从dos格式转到unix格式 dos2unix

    经常遇到要在aix上写一些文本或者脚本,但是用vi太费劲,于是在win下写好 ...在UNIX中,每一行的结束符是换行符; 而在WINDOWS中,每一行的结束符是<RETURN>+换行符. 用以下几种办法可以将其格式互为转换.

    dos2unix unix2dos

    类unix文件拷贝到windows系统,就会丢失换行标识, windows文件拷贝到类unix系统,就会出现"^M"标识 可以用于解决Ftp上传二进制文件时没加binary, dos2unix 没加binary上传的文件. unix2dos集成在dos2unix中

    unix操作系统基础

    unix操作系统基础unix操作系统基础unix操作系统基础unix操作系统基础unix操作系统基础unix操作系统基础

    dos2unix linux安装包

    dos2unix linux安装包, 支持各个linux操作系统,属于比较新的安装包,有需要的同学请你去吧

    UNIX操作系统教程

    《UNIX操作系统教程(第3版)》内容简介:本教材第3版修订中删减了第2版中一些过时的UNIX技术和描述,增加了针对Linux系统设计技术和使用技术的阐述,增加了对UNIX环境编程实用技术的描述。其中第1章是有关UNIX技术的...

    unix2dos dos2unix 文件格式转换

    unix2dos/u2d unix转换成windows格式命令 dos2unix/d2u windows转换成unix格式命令 getclip 获取剪贴板内容 putclip 写入剪贴板内容

    unix-dos 文本转换工具

    1、由于windows平台与linux平台下的换行符不同,因此在不同平台间传送文件时,因经过转换,此工具即实现了此功能。 2、此资源包文件列表如下: a) unix2dos.c #unix2dos源代码 b) dos2unix.c #dos2unix源代码 c) ...

    UNIX操作系统区别

    主流服务器UNIX操作系统区别。包含设置,目录结构,命令操作等方面的区别。

    dos2unix软件

    dos2unix软件 用于文档格式转换

    dos2unix安装包附安装说明书.zip

    linux系统下,dos2unix安装包及安装说明

    unix操作系统设计 pdf

    《unix操作系统设计》中文版,(美) Maurice j.Bach著,unix经典教程

Global site tag (gtag.js) - Google Analytics