从打字机到文字处理器及 UNIX 基础入门
文字处理器与标记语言
传统打字机的时代已经过去,如今文字处理器成为主流。但大多数普通的文字处理器存在一定局限性,除非使用非常先进的计算机和软件(即电子出版系统),否则很难在屏幕上完全呈现出与打印页面一致的效果。
以 Wordstar 为例,它是早期的文字处理程序,在表示下划线时,需用特殊控制字符“^S”将需要下划线的文字括起来,如“^Sword Processing with WordStar^S”,打印时该标题行才会有下划线。与之相比,nroff 使用“ . ul ”来实现类似功能。多数文字处理程序难以实现“所见即所得”的完美效果,屏幕显示通常会混合控制代码和格式设置。而且,多数文字处理器更适合处理简短文档,当处理篇幅较长的文档时,格式设置就变得复杂。
大型文档在写作前通常需要进行设计,就像建造房屋前需要绘制蓝图一样。文档设计要明确各部分的样式,如章节标题的字体、间距等,以保证全文格式的一致性。使用文字处理器处理大型文档时,很难确保格式细节的一致性,而标记语言(如 nroff)则可以通过定义宏来轻松解决这个问题。例如,用“ . H1 ”定义顶级标题,“ . H2 ”定义二级标题。如果后续需要更改设计,只需修改相关设计元素的定义即可。虽然部分文字处理程序(如 Microsoft WORD)具备定义全局文档格式的功能,但不如标记语言系统普遍。
打印机类型及特点
文字处理系统的格式设置能力受打印机输出能力的限制。常见的打印机有以下四种类型:
|打印机类型|特点|适用场景|
| ---- | ---- | ---- |
|点阵打印机|通过一系列点组成字符,打印头针数越多,字符越精细,可打印图形显示|适用于准备内部备忘录和快速打印大文件|
|信函质量打印机|价格高、速度慢,打印机制类似打字机,使用包含完整字符的打印球或打印轮,输出更清晰易读|常用于办公室正式通信、提案和报告的最终草稿|
|照相排版机|采用摄影技术在胶片或相纸上打印字符,有多种字体样式,字符更精细,使用可变宽度字体,可在同一页面混合不同样式和大小的字体|适用于对印刷质量要求较高的文档|
|激光打印机|能产生高分辨率字符(300 - 500 点每英寸),虽不如照相排版字符精细,但购买成本低,可在普通纸张上打印,运行成本低|逐渐普及,可满足多种文档打印需求|
早期,需要高质量印刷的文档通常会交给专业排版公司处理。AT&T 开发了排版标记语言和排版程序 troff,它是 nroff 的扩展且与之基本兼容。随着低成本激光打印机的发展,troff 的应用更加广泛。不过,要充分发挥激光打印机的性能,还需要合适的软件。对于大型文档,尤其是涉及可变字体大小、行距等高级格式设置时,标记语言比“所见即所得”系统更具优势。只有最昂贵的电子出版系统(大多基于先进的 UNIX 工作站)能同时实现屏幕预览和轻松更改整体文档格式的功能。
UNIX 的其他文字处理工具
文档编辑和格式设置只是文字处理的一部分。在撰写许多文档(如技术手册)时,作者很少从头开始。UNIX 的通信功能可以将远程系统中的文件传输到本地,方便获取已有资料。同时,UNIX 提供了许多分析和翻译工具,可帮助解读非标准格式的文件,还能进行文档内容的“剪切和粘贴”操作。
在文档撰写过程中,有程序可检查拼写、风格和用词,生成的报告有助于发现文档中可能影响用户阅读的语法或结构问题。对于需要反复修订的文档(如手册),UNIX 的程序开发工具(如 SCCS 和 diff)可用于比较不同版本,打印差异报告或生成带有更改标记的副本。
UNIX 为不畏惧计算机的作者提供了丰富的创作环境,用户可以编写命令文件或 shell 脚本,将单个程序组合成更复杂的工具,以满足特定需求。例如,自动索引生成是标准 UNIX 文字处理工具未涉及的复杂任务,但通过运用 UNIX 环境中的工具和一些创意,也能实现。
过去,完成一本书的多个步骤不由作者掌控,如校对、排版等由专业人员负责。而 UNIX 为作者提供了从开始到结束控制整个过程的工具,就像工匠能全程把控产品制作一样。熟悉 UNIX 基本工具后,用户还可设计额外的工具,通过编写 shell 脚本来利用 UNIX 资源解决问题,实现特定任务,这不仅能带来成就感,还能锻炼思维能力。UNIX 的强大之处在于其编程哲学,即系统的力量更多源于程序之间的关系,而不是程序本身。基于这种哲学构建的文档处理系统具有高度灵活性,能完成文字处理器难以完成或无法完成的任务。
UNIX 操作系统基础
UNIX 操作系统是一组程序,用于控制和组织计算机系统的资源和活动。这些资源包括硬件(如计算机内存、终端、打印机、磁盘驱动器等)和执行特定任务的软件实用程序。UNIX 是多用户、多任务操作系统,为用户提供了访问计算机资源和实用程序的环境,其核心是命令解释器——shell。
以下是 UNIX 基础操作的一些关键信息:
-
UNIX Shell
:作为交互式计算机系统,UNIX 的 shell 接受用户在终端输入的命令,调用程序执行特定任务,并处理程序的输出,通常将结果显示在终端屏幕上。
-
命令格式
:UNIX 命令有简单的单字命令(如“date”),也有复杂的需要指定选项和参数的命令。常见命令格式为“command option(s) argument(s)”。例如,“ls”命令用于列出当前目录下的文件,“ls -l”可修改文件信息的显示方式,“ls -l ch
”会显示所有以“ch”开头的文件信息。
-
系统提示
:登录 UNIX 系统后,会出现系统提示。常见的 shell 有 Bourne shell(使用“$”作为提示符号)和 C shell(使用“%”作为提示符号),但系统提示可由管理员自定义。
-
命令输入与处理
*:输入命令时,字符会在屏幕上回显,按下“RETURN”键后 shell 才会解释命令。用户可使用删除键(如“DEL”或“BACKSPACE”)纠正输入错误。若命令无效,会返回错误信息。程序执行时,输出默认显示在屏幕上,可通过“CTRL - C”或“DEL”键中断程序,“CTRL - S”暂停输出,“CTRL - Q”恢复输出。部分命令会调用具有自身命令解释器和内部命令的实用程序,使用完后需使用特定命令退出并返回系统提示。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([开始输入命令]):::startend --> B(字符回显):::process
B --> C{按下 RETURN 键?}:::decision
C -->|是| D(Shell 解释命令):::process
C -->|否| B
D --> E{命令是否有效?}:::decision
E -->|是| F(调用程序执行任务):::process
E -->|否| G(返回错误信息):::process
F --> H(输出结果到屏幕):::process
H --> I{是否需要中断?}:::decision
I -->|是| J(按下 CTRL - C 或 DEL 键中断程序):::process
I -->|否| K(程序继续执行):::process
K --> L(程序执行完毕):::process
L --> M([返回系统提示]):::startend
- 输出重定向 :多数程序会产生输出,包括标准输出和标准错误,默认都显示在屏幕上,但可分别进行操作。例如,“echo”命令用于在屏幕上显示文本,“cat”命令用于显示文件内容。使用输出重定向运算符“>”可将命令输出发送到文件,如“echo Call home at 3:00 > reminders”将文本写入“reminders”文件。若再次使用“>”重定向到同一文件,会覆盖原内容;使用“>>”则可在文件末尾追加内容。“cat”命令还可用于连接多个文件,如“cat reminders todolist”会依次显示两个文件的内容,“cat reminders todolist > do now”将两个文件内容合并到“do now”文件中。若文件不存在,即使重定向标准输出,也会打印错误消息。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([执行命令]):::startend --> B(产生输出):::process
B --> C{是否重定向输出?}:::decision
C -->|否| D(输出到屏幕):::process
C -->|是| E{使用 > 还是 >>?}:::decision
E -->|>| F(覆盖文件内容):::process
E -->|>>| G(追加到文件末尾):::process
F --> H(文件更新):::process
G --> H
D --> I([结束]):::startend
H --> I
- 文件和目录 :UNIX 文件系统由文件和目录组成,目录用于组织文件,类似于纸质文件系统中的文件抽屉。文件系统呈层次结构,可表示为倒置的树状结构,根目录位于顶部,包含其他目录,这些目录又可包含子目录。在包含多个磁盘或磁盘分区的系统中,可能存在多个文件系统,但通过挂载操作,对用户来说就像只有一个文件系统。
从打字机到文字处理器及 UNIX 基础入门
深入理解 UNIX 命令元素
在 UNIX 系统中,命令的构成元素有着明确的分工和用途。下面详细介绍命令、选项和参数的具体情况:
|元素|说明|示例|
| ---- | ---- | ---- |
|命令|用于标识要执行的软件程序或实用工具,以小写字母输入|
ls
(列出文件)、
date
(显示日期)|
|选项|用于修改命令的执行方式,通常以减号加单个字母表示|
ls -l
(显示文件详细信息)|
|参数|指定命令操作的对象,可以是表达式或文件名,使用特殊元字符可代表多个文件名|
ls -l ch*
(显示以
ch
开头的文件信息)|
不同的命令有着各自独特的功能和使用场景,用户需要根据具体需求选择合适的命令,并搭配相应的选项和参数来完成任务。例如,当需要查看当前目录下所有文件的详细信息时,就可以使用
ls -l
命令。而如果只关注以特定字符开头的文件,就可以结合参数和元字符,如
ls -l ch*
。
输出重定向的更多应用场景
输出重定向在实际使用中有多种应用场景,除了前面提到的将命令输出保存到文件,还可以用于其他方面。
1.
创建日志文件
:在执行一些需要记录操作过程的命令时,可以将输出重定向到日志文件中。例如,执行一个脚本文件,并将其输出记录到
script_log.txt
文件中:
./my_script.sh > script_log.txt
-
合并多个文件输出
:可以将多个命令的输出合并到一个文件中。比如,将
file1.txt和file2.txt的内容合并到merged.txt文件中:
cat file1.txt file2.txt > merged.txt
-
错误处理
:可以将标准错误输出重定向到一个文件中,以便后续分析。例如,执行一个可能会出错的命令,并将错误信息保存到
error_log.txt文件中:
some_command 2> error_log.txt
文件和目录操作的进阶技巧
在 UNIX 文件系统中,除了基本的文件和目录概念,还有一些进阶的操作技巧。
1.
目录切换
:使用
cd
命令可以在不同目录之间切换。例如,切换到上级目录可以使用
cd ..
,切换到主目录可以使用
cd ~
。
2.
文件查找
:使用
find
命令可以根据文件名、文件类型、文件大小等条件查找文件。例如,查找当前目录下所有扩展名为
.txt
的文件:
find . -name "*.txt"
-
文件权限管理
:使用
chmod命令可以修改文件或目录的权限。例如,将my_file.txt文件的权限设置为所有者可读、写、执行,组用户和其他用户只读:
chmod 744 my_file.txt
UNIX 文字处理的综合应用案例
下面通过一个综合案例来展示如何利用 UNIX 的各种工具进行文字处理。假设我们要编写一个技术文档,文档包含多个章节,每个章节有不同的标题级别。
1.
文档结构设计
:使用标记语言(如 nroff)来定义文档结构。首先,定义不同级别的标题样式:
.H1 第一章 介绍
内容...
.H2 1.1 背景
内容...
.H2 1.2 目标
内容...
.H1 第二章 方法
内容...
- 内容编辑 :使用文本编辑器(如 vi 或 emacs)来编辑文档内容。在编辑过程中,可以使用 UNIX 的搜索和替换功能来快速修改文本。例如,将所有的“旧术语”替换为“新术语”:
sed -i 's/旧术语/新术语/g' my_document.txt
-
格式检查
:使用拼写检查和风格检查程序来检查文档中的错误。例如,使用
spell命令检查文档中的拼写错误:
spell my_document.txt
- 版本管理 :使用 SCCS 或 diff 工具来管理文档的不同版本。例如,比较两个版本的差异:
diff version1.txt version2.txt
- 打印输出 :选择合适的打印机进行打印。如果需要高质量的输出,可以使用激光打印机或照相排版机。在打印前,可以使用输出重定向将文档内容输出到文件,然后再进行打印:
cat my_document.txt > print_file.txt
lpr print_file.txt
总结与展望
通过对 UNIX 文字处理相关知识的学习,我们了解到从打字机到文字处理器的发展历程中,UNIX 系统提供了丰富而强大的工具和功能。从简单的命令操作到复杂的文档处理,从基本的文件管理到高级的版本控制,UNIX 都能满足不同用户的需求。
在未来,随着计算机技术的不断发展,UNIX 文字处理工具也将不断完善和创新。例如,可能会出现更加智能化的文本编辑和格式设置工具,能够自动识别文档结构并进行优化;版本管理工具也可能会更加便捷和高效,支持多人协作和实时更新。
对于想要深入掌握文字处理技术的用户来说,学习和使用 UNIX 系统是一个不错的选择。通过不断实践和探索,用户可以充分发挥 UNIX 的优势,提高文字处理的效率和质量,创造出更加优秀的文档作品。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px
A([开始编写文档]):::startend --> B(设计文档结构):::process
B --> C(编辑文档内容):::process
C --> D(格式检查):::process
D --> E{是否有错误?}:::decision
E -->|是| C
E -->|否| F(版本管理):::process
F --> G(打印输出):::process
G --> H([完成文档]):::startend
超级会员免费看
9

被折叠的 条评论
为什么被折叠?



