输入输出

输入输出

输入输出是 Shell 脚本和外界交互的桥梁。脚本需要接收用户的输入、读取文件内容、输出处理结果、记录日志信息,这些都离不开输入输出操作。

标准流的概念

Linux 系统为每个进程提供了三个标准流:

标准输入(stdin):编号 0,默认连接键盘。程序从这里读取输入数据。

标准输出(stdout):编号 1,默认连接终端屏幕。程序把正常结果输出到这里。

标准错误(stderr):编号 2,默认也连接终端屏幕。程序把错误信息输出到这里。

这三个流构成了程序和外界通信的基础通道。理解它们的工作方式,是掌握 Shell 输入输出的关键。

输出方式

Shell 提供了两种主要的输出命令:

echo:简单直接,适合大多数场景。能输出字符串、变量值,支持一些基本的转义字符。

printf:功能强大,支持格式化输出。可以精确控制输出格式,适合生成报表、对齐数据等场景。

两者各有适用场景,echo 用起来更方便,printf 更灵活。

输入方式

读取输入主要有两种方式:

read 命令:从标准输入读取用户输入,支持提示信息、超时设置、密码输入等功能。

命令替换:通过 $() 或反引号捕获命令的输出,作为脚本的输入数据。

数据流控制

重定向和管道是 Shell 的两大法宝:

重定向:改变数据流的走向。可以把输出保存到文件、把文件内容作为输入、把错误信息单独处理。

管道:把一个命令的输出直接传给另一个命令作为输入。多个命令可以串联起来,形成数据处理流水线。

本章内容

这一章我们详细学习:

  • echo 命令:基本用法、转义字符、颜色输出
  • printf 格式化:格式说明符、宽度控制、对齐方式
  • read 读取输入:交互式输入、多变量读取、输入验证
  • 重定向:输出重定向、输入重定向、错误重定向
  • 管道:管道的基本用法、常见组合、管道与重定向的配合

掌握输入输出操作,就能让脚本和用户、文件、其他程序自由交互,这是写实用脚本的基本功。