重定向
1.释义:
Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作。
2.简介
file descriptors ,FD,文件描述符
进程使用文件描述符来管理打开的文件
类型 | 数字 | 英文 | 缩写 |
---|---|---|---|
标准输入 | 0 | standard input | stdin |
标准输出 | 1 | standard output | stdout |
标准错误 | 2 | standard error | stdeer |
通过我们非常熟悉的VIM程序。来观察一个进程的FD信息。
1.通过一个终端,打开一个文本。
vim 1.txt
2.通过另一个终端,查询文本程序的进程号
ps aux| grep vim
通常在 /proc/PID/fd 就能看到文件的FD调用情况。
[root@localhost ~]# ls /proc/3203/fd
出现0 1 2 4四个数字
再使用ll查看
[root@localhost ~]# ll /proc/5606/fd
我们可以了解到
看到的0124就是FD,程序通过描述符访问文件,
可以是常规文件,也可以是设备文件
3.输出重定向及综合案例
由上可知
FD1为标准输出
1>file1.txt
将标准输出结果输入到file1.txt,多次使用只显示最终结果(文件不存在自动创建文件)
1>>file1.txt
将标准输出结果输入到file1.txt,多次使用追加结果,不覆盖之前的结果(文件不存在自动创建文件)
FD2为标准错误,仅当某条命令产生错误时,才会有错误输出(正确不显示)
如下图,查看一个根本不存在的文件
*1>file1.txt
将标准错误结果输入到file1.txt,多次使用只显示最终结果(文件不存在自动创建文件)
1>>file1.txt
将标准错误结果输入到file1.txt,多次使用追加结果,不覆盖之前的结果(文件不存在自动创建文件)*
将错误与正确结果输入到一个文件里面
4.输入重定向发送邮件
编写邮件
[root@qianfeng ~]# mail -s “ssss” alice <word.txt
111
222
333
.
word.txt
*mail*电子邮件
*-s*标题
*ssssssss*标题内容
*alice*邮件接收人
*.*结束符号
切换用户查看邮件
仅输入mail
只看这一行即可
一条新消息由root在什么时间发出,标题是你好
删除的是可以直接附加文件
管道
1.释义:
管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。有如下特质:
-
其本质是一个伪文件(实为内核缓冲区)
-
由两个文件描述符引用,一个表示读端,一个表示写端。
-
规定数据从管道的写端流入管道,从读端流出。
管道的原理: 管道实为内核使用环形队列机制,借助内核缓冲区(4k)实现。
管道命令可以将多条命令组合起来,一次性完成复杂的处理任务。
2.进程管道 Piping
command1 | command2 |command3 |…
指令1的标准输出
作为指令2的标准输入
指令2的标准输出
作为指令3的标准输入…
3.tee管道
三通管道,即交给另一个程序处理。又保存一份副本
虽然只显示五行,但在9.txt中已经有了passwd二点全部数据
4.参数传递 Xargs
传递cp rm一些特殊命令
建立五个文件
确认文件是否建立
建立一个诉求文件
执行文件
查看结果