`

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

    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>+换行符. 用以下几种办法可以将其格式互为转换.

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

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

    dos2unix unix2dos

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

    unix操作系统基础

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

    UNIX操作系统教程

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

    unix2dos dos2unix 文件格式转换

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

    UNIX操作系统区别

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

    dos2unix软件

    dos2unix软件 用于文档格式转换

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

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

    dos2unix linux安装包

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

    unix操作系统设计 pdf

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

    UNIX网络操作系统实验报告 广工

    来自广东工业大学 UNIX 网络操作系统 实验 报告 一、 实验目的 1. 掌握UNIX系统的目录和文件管理命令。 2. 掌握shell的输入输出重定向操作符。 3. 编写shell脚本文件,并调试、执行它。 二、 实验要求 1. 要求每人...

    unix2dos工具批量转换

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

    UNIX操作系统实验报告

    <UNIX操作系统>的四个实验报告文档全在这儿了,可供分享.

Global site tag (gtag.js) - Google Analytics