管道和重定向
2017-04-15 15:30
162 查看
---- 在Linux系统当中,大多数命令都很简单,很少有复杂功能的命令。每个命令往往只实现一个或几个很简单的功能。
---- 我们可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。
---- Linux中,几乎所有命令的返回数据都是纯文本的(因为命令都是运行在CLI - Command line Interface命令行界面下),而纯文本
形式的数据又是绝大多数命令的输入格式,这就让多命令协作称为可能。
---- Linux的命令行为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。
---- 命令行Shell的数据流有以下定义:
命令通过 STDIN 接收参数或数据,通过 STDOUT 输出结果或通过 STDERR 输出错误。
通过管道和重定向,我们可以控制CLI的数据流。
---- 重定向
在csh环境下:
> 和 2>: 如果目标文件不存在,则创建文件。如果存在,则覆盖。
将/etc/passwd的内容作为输入给grep命令,来查找root所在的行。
---- 管道
管道通常用来组合不同的命令,以实现一个复杂的功能。
重定向通常用来保存某命令的输出信息或错误信息。可以用来记录执行结果或保存错误信息到一个指定的文件。(保存log等)
---- script 多个命令的输出都需要记录,可以用script
我们在启动 script 时没有指定文件名,它会自动记录到当前目录下一个名为 typescript 的文件中。也可以用 -a 参数指定文件名
此时终端的输出内容被记录到 my.txt 这个文件中。
退出 script 时,用 exit 命令。
---- 我们可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。
---- Linux中,几乎所有命令的返回数据都是纯文本的(因为命令都是运行在CLI - Command line Interface命令行界面下),而纯文本
形式的数据又是绝大多数命令的输入格式,这就让多命令协作称为可能。
---- Linux的命令行为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。
---- 命令行Shell的数据流有以下定义:
名称 | 说明 | 编号 | 默认 |
STDIN | 标准输入 | 0 | 键盘 |
STDOUT | 标准输出 | 1 | 终端 |
STDERR | 标准错误 | 2 | 终端 |
通过管道和重定向,我们可以控制CLI的数据流。
---- 重定向
关键字 | 定义 |
>(1>) | 将STDOUT重定向到文件(覆盖) |
>> | 将STDOUT重定向到文件(追加) |
2> | 将STDERR重定向到文件(覆盖) |
2>&1 | 将STDERR与STDOUT结合 (标准错误重定向到标准输出) |
< | 重定向STDIN |
> 和 2>: 如果目标文件不存在,则创建文件。如果存在,则覆盖。
将/etc/passwd的内容作为输入给grep命令,来查找root所在的行。
---- 管道
关键字 | 定义 |
| | 将一个命令的STDOUT作为另一个命令的STDIN |
[yanxia.dong@eslruntime07 exercise]$ ls file out outfile [yanxia.dong@eslruntime07 exercise]$ ls -l | grep out -rw-r--r-- 1 yanxia.dong users 29 Apr 15 15:12 out -rw-r--r-- 1 yanxia.dong users 6 Apr 15 15:22 outfile [yanxia.dong@eslruntime07 exercise]$ find . -user yanxia.dong | grep file ./file ./outfile [yanxia.dong@eslruntime07 exercise]$ find . -user yanxia.dong > myout | grep file [yanxia.dong@eslruntime07 exercise]$ cat myout . ./out ./file ./outfile ./myout [yanxia.dong@eslruntime07 exercise]$ find . -user yanxia.dong | grep file > myout [yanxia.dong@eslruntime07 exercise]$ cat myout ./file ./outfile
管道通常用来组合不同的命令,以实现一个复杂的功能。
重定向通常用来保存某命令的输出信息或错误信息。可以用来记录执行结果或保存错误信息到一个指定的文件。(保存log等)
---- script 多个命令的输出都需要记录,可以用script
[yanxia.dong@eslruntime07 ~]$ script Script started, file is typescript.
我们在启动 script 时没有指定文件名,它会自动记录到当前目录下一个名为 typescript 的文件中。也可以用 -a 参数指定文件名
[yanxia.dong@selruntime07 ~]$ script -a my.txt Script started, file is my.txt
此时终端的输出内容被记录到 my.txt 这个文件中。
退出 script 时,用 exit 命令。
相关文章推荐
- 利用管道实现控制台程序输入输出的重定向
- Unix&Linux大学教程:15 标准I/O:重定向和管道
- Linux中重定向及管道
- 管道符 重定向 环境变量
- I/O重定向和管道
- linux shell 管道命令(pipe)使用及与shell重定向区别
- 学习 Linux,101: 流、管道和重定向(转,合)
- linux-重定向与管道
- Shell变量、数据重定向和管道
- Unix & Linux大学教程(二):Shell、重定向和管道
- 自己写的shell程序 多层管道、重定向、后台、命令历史
- 鸟哥的linux私房菜学习笔记《二十三》通配符、重定向、管道等bash用法
- linux下的基本操作11(输入输出重定向及管道)
- linux入门基础——linux多命令协作:管道及重定向
- linux初学(十七)之linux管道及重定向
- linux 输出重定向,管道,cut,grep,wc,sort
- linux shell 管道命令(pipe)使用及与shell重定向区别
- linux基础---管道和I/O重定向
- RHCE 学习笔记(4)- 重定向,管道和VIM编辑器
- Linux命令行学习之路(六)——重定向和管道