(一)
标准输入
以键盘读取用户输入的数据,然后再把数据拿到 Shel程序中使用。
标准输出
Shell 程序产生的数据,这些数据一般都是呈现到显示器上供用户浏览查看
输入输出重定向
输入方向就是数据从哪里流向程序。数据默认从键盘流向程序,如果改变了它的方向,
数据就从其它地方流入,这就是输入重定向。
输出方向就是数据从程序流向哪里。数据默认从程序流向显示器,如果改变了它的方向,
数据就流向其它地方,这就是输出重定向。
(二)文件描述符
linux 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示。一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器。在linuxshell 执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述不容易记忆,shell同时给出相应的文件名。
文件名 | 文件描述符 | 功能 |
标准输入stdin | 0 | 获取键盘的输入数据 |
标准输出stdout | 1 | 将正确数据输出到显示器上 |
标准错误 | 2 | 将错误信息输出到显示器上 |
默认情况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定向到 file。以下是几种情况:
如果希望 stderr 重定向到 file,可以这样写:
$ command 2>file
如果希望 stderr 追加到 file 文件末尾,可以这样写:
$ command 2>>file
2 表示标准错误文件(stderr)。
如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:
$ command > file 2>&1 或者 $ command >> file 2>&1
如果希望对 stdin 和 stdout 都重定向,可以这样写:
$ command < file1 >file2command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。
()重定向命令列表
输出重定向
当你在Linux或Unix-like操作系统中执行命令时,可以使用输出重定向来控制命令的输出。输出重定向通过使用特定符号来实现,以下是一些常见的语法:
`>` 符号:
将命令的输出覆盖到指定的文件。如果文件已经存在,它将被新内容替代。
`>>` 符号:
将命令的输出追加到指定文件的末尾,而不会删除已有的内容。
示例:
例如,执行以下命令会将指定的文本追加到"users"文件的末尾,而不会删除已有的内容:
$ echo "好人一生平安" >> users
这些输出重定向功能对于日志记录、数据备份和生成报告等任务非常有用。你可以使用这些符号来控制命令的输出,以满足不同的需求。
输入重定向
wc命令可以用来对文本进行统计,包括单词个数、行数、字节数。
wc语法格式:wc [选项] [文件名]
常见选项有:
(四)补充
Here Document
Here Document是Shell脚本中的一种特殊重定向方式,用于将一段文本作为输入传递给一个命令或脚本。这种重定向方式允许你在Shell脚本或交互式环境中嵌入多行文本,并将这些文本作为命令的输入。
Here Document的基本形式如下:
command << delimiter document delimiter
command
是接收输入的命令。delimiter
是自定义的分界符,它标志了文本输入的开始和结束。document
包含了你要传递给命令的文本。
注意事项:
- 结尾的
delimiter
必须以单独的一行顶格写,前后不能有任何字符,包括空格和制表符。 - 开始的
delimiter
前后的空格会被忽略。 - 这个功能非常适用于需要在Shell脚本中生成动态文本或配置文件的情况。
可以使用Here Document来传递多行文本,而不必在命令行中手动输入多行文本。wc -l
命令用来计算Here Document中的行数。这个功能在脚本编程中非常有用,因为它允许你轻松地嵌入文本内容,而无需手动创建临时文件。
/dev/null
文件。/dev/null
是一个特殊的文件,它会吞掉所有写入它的内容,这对于禁止输出或将输出丢弃非常有用。通过将命令的输出重定向到/dev/null
,你可以将命令的输出完全丢弃,使其不会在屏幕上显示或占用系统资源。如果将标准输出和标准错误都重定向到/dev/null
,可以使用command > /dev/null 2>&1
。这里的2>&1
表示将标准错误(文件描述符2)重定向到标准输出,然后再将标准输出重定向到/dev/null
。这样,命令的所有输出都会被丢弃。