UNIX 系统输入输出与特殊字符使用详解
1. UNIX 输入输出基础
在软件领域,一些看似简单却影响深远的概念往往能推动行业快速发展。UNIX 的标准输入输出方案就是这样的典范,它与 LISP 语言、关系数据模型和面向对象编程等经典创新一样,对系统编程产生了重大影响。
UNIX 的输入输出方案基于两个简单而强大的理念:
-字符序列形式:UNIX 文件的输入输出采用任意长的字符(字节)序列形式,这与旧的文件系统中复杂的输入输出方案(如“块”“记录”“卡片图像”等)形成鲜明对比。
-一切皆文件:系统中所有产生或接收数据的对象都被视为文件,包括磁盘驱动器和终端等硬件设备,而旧系统对每个设备的处理方式各不相同。这两个理念让系统程序员的工作变得更加轻松。
2. 标准输入输出(Standard I/O)
按照惯例,每个 UNIX 程序都有标准输入、标准输出和标准错误输出三种方式。标准输入用于接收程序的输入,标准输出用于产生正常的程序输出,标准错误输出则用于输出错误信息。
标准 I/O 是专门为终端交互式用户设计的,与早期的批处理方式不同。所有的 shell 对标准 I/O 的处理方式基本相同,当你调用一个程序时,标准输入通常是你的键盘,标准输出和错误输出则是你的屏幕或窗口。例如,mail工具会在标准输出上向你打印消息,当你使用它向其他用户发送消息时,它会从标准输入接收你的输入。
在必要时,你可以将输入和输出重定向到文件。如果你想将一个现有文件的内容作为邮件发送给别人,可以将m