深度解析Unix操作系统文本操作

系统 其他OS
文章以Unix操作系统中著名的设计思想:“一组工具协同工作,以便完成一项任务”来写出通过Unix操作系统管道可以对文本进行各种方式的转换和操作。

最初Unix操作系统刚出来的时候,人们不大熟悉这种新的操作系统,但他们很快找到了适当的切入点,大学中的研究人员需要一种像样的文本处理环境。因为在那个时候,计算机的处理速度和内存容量有限,所以程序必须很小,并且相对比较简单。

这样就产生了Unix操作系统中著名的设计思想:“一组工具协同工作,以便完成一项任务”。通过 Unix操作系统管道将几种很小的、但功能强大的文本处理工具组合在一起,可以对文本进行各种方式的转换和操作。

对文本进行各种操作

在开始使用Unix操作系统 的各种文本实用程序操作文本之前,需要了解如何获得文本。并且在进行这项工作之前,需要了解Unix操作系统 的标准输入/输出 (I/O) 流。标准 C 库(因而,每个Unix操作系统 程序)定义了三种标准流:输入、输出和错误。有时将它们称为 stdin、stdout 和 stderr,这是在所有 C 程序中用来表示它们的全局变量。

当您在 Shell 中使用 > 操作符将程序输出重定向到文件时,就可以将它的标准输出 (stdout) 流发送到这个文件。例如:ls > this-dir 将 ls 的输出发送到一个名为 this-dir 的文件。

当您在 Shell 中使用 < 操作符将程序输入重定向到文件时,就可以将该文件中的内容输入到该程序的标准输入 (stdin) 流。例如:sort < this-dir 可以从名为 this-dir 的文件中读取内容,并将其作为 sort 命令的输入。

通过 Unix操作系统管道将几种很小的、但功能强大的文本处理工具组合在一起,可以对文本进行各种方式的转换和操作。另一个常用于重定向标准流的操作符是“|”(管道)操作符,它可以将左侧程序的标准输出流连接到右侧程序的标准输入流。例如:ls | sort 和前面的两个示例完成相同的任务,并且无需临时文件,ls 的输出直接进入 sort 命令。

如果您仔细观察,那么可能会发现,前面的这些示例中并没有出现标准错误 (stderr) 流。与标准输出流一样,可以对 stderr 进行重定向或使用管道进行传输,但是您需要告诉 Shell 您希望处理 stderr 而不是 stdout。

可以使用 2> 操作符将标准错误流重定向到文件。在处理生成有用的错误输出的命令时,您经常会看到这个操作符,比如用于编译Unix操作系统 程序的 make 工具:make 2> build-errors。

这个命令运行了 make,并将任何错误信息发送到 build-errors 文件。与之类似,您可以使用 2| 将 stderr 通过管道传递到另一个程序。

在熟悉了这些之后,我们就应该理解通过 Unix操作系统管道将几种很小的、但功能强大的文本处理工具组合在一起,可以对文本进行各种方式的转换和操作的意思了。
 

【编辑推荐】

  1. 解决掉你不要的Unix操作系统进程
  2. 利用引用管理Unix操作系统
  3. Unix操作系统元字符管理
  4. Unix操作系统进程管理
  5. Unix操作系统进程关闭方法
责任编辑:小霞
相关推荐

2010-04-07 16:15:04

Unix操作系统

2010-04-08 16:05:49

Unix操作系统

2010-04-19 13:47:20

Unix操作系统

2010-04-16 18:23:43

Unix操作系统

2010-04-19 13:54:43

Unix操作系统

2010-04-20 10:00:58

Unix操作系统

2010-04-07 15:59:29

Unix操作系统

2010-04-07 10:15:04

Unix操作系统

2010-04-09 11:32:07

Unix操作系统

2010-04-13 12:27:44

Unix操作系统

2010-04-09 16:03:30

Unix操作系统

2010-05-06 15:35:14

Unix操作系统

2010-04-07 10:29:01

Unix操作系统

2010-04-15 14:40:26

Unix操作系统

2010-04-13 13:02:43

Unix操作系统

2010-04-16 18:19:32

Unix操作系统

2010-04-20 11:52:33

Unix操作系统

2010-04-16 10:34:45

Unix操作系统

2010-05-05 11:21:37

Unix操作系统

2010-04-20 17:11:33

Unix操作系统
点赞
收藏

51CTO技术栈公众号