Linux输入输出(重定向)

1.重定向概述

1.什么是重定向
将原本药输出到屏幕的数据信息,重新定向到某个指定文件中。比如每天凌晨定时备份数据,希望将备份数据的结果保存到某个文件中,这样第二天通过查看文件的内容就知道昨天备份的数据是成功还是失败

2.为何要使用重定向?
1.当屏幕输出的信息很重要,而且希望保存重要的信息时;
2.后台执行中的程序,不希望他干扰屏幕正常的输出结果时:
3.系统的列行命令,列如定时任务执行结果,希望保存下来时;
4.一些执行命令,我们已知道他可能出现错误的信息,想将他直接丢弃时;
5.错误的日志于需要分别输出至不同的文件时。

3.学习重定向的预备知识,标准输入和输出
当一个行程时通常会自动打开三个标准文件,分别是标准输入,标准输出,错误输出

image.png

进程将从标准输入中得到数据,将正常输出打印至屏幕终端,将错误的输出信息也打印至屏幕终端
PS:进程是使文件描述(file descriptors)来管理打开的文件

image.png

以cat命令为列。cat命令的功能是从命令行给出的文件中读取数据,并将这些数据直接送到标准输出。若使用如下命令:

会把文件/etc/passwd的内容输出显示到屏幕上

[root@liujun ~]# cat /etc/passwd

但如果,使用cat命令没有跟上输入的文件名 ,>那么cat命令则会通过命令行标准输入中读取数 > 据,并将其送到标准输出
[root@liujun ~]# cat
hello 标准输入
hello 标准输出
^C
用户输入的每一行都立刻被cat命令输出到屏幕上

下面了解一下标准输入输出的过程
[root@liujun ~]# tail -f /etc/passwd
ctrl +z 将进程转到后台
查看运行的进程
[root@liujun ~]# ps
PID TTY TIME CMD
5848 pts/1 00:00:00 bash
6885 pts/1 00:00:00 tail
6888 pts/1 00:00:00 ps

查看tail命令的pid,6885进程下的文件描述
[root@liujun ~]# ls -l /proc/6885/fd
total o
lrwx------ 1 root root 64 Dec 3 06:57 0 -> /dev/pts/1
lrwx------ 1 root root 64 Dec 3 06:57 1 -> /dev/pts/1
lrwx------ 1 root root 64 Dec 3 06:56 2 -> /dev/pts/1
lr-x------ 1 root root 64 Dec 3 06:57 3 -> /etc/passwd
lr-x------ 1 root root 64 Dec 3 06:57 4 -> inotify

linux查看标准输入输出设备
[root@liujun ~]# ls -l /dev/std*
lrwxrwxrwx 1 root root 15 Dec 2 22:30 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Dec 2 22:30 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Dec 2 22:30 /dev/stdout -> /proc/self/fd/1

2.输出重定向
输出重定向,改变输出内容的位置。输出重定向有一下几种表示,如表格所示


image.png

案列1标准输出重定向(每次都会覆盖文件)


image.png

标准输出重定向, 先清空,后写入, 如果文件不存在则创建

[root@xuliangwei ~]# ifconfig eth0 > abc

image.png

标准追加输出重定向, 向配置文件末尾追加内容

[xuliangwei@xuliangwei ~]$ echo "This is network conf" >> if

image.png

image.png

image.png

image.png

image.png

image.png

3.输入重定向
输入重定向,即原本键盘等上获得得输入信息,重定向有命令的输出作为输入。<等价0<
案列1 从文件中读入输入的操作
没有改变输入的方向,默认键盘
[root@liujun ~]# mail alice
Subject:hello
1111
2222
3333
.
EOT
检查是否收到邮件
[root@liujun ~]# su -alice
[root@liujun ~]# mail

输入重定向,来至于文件
[root@liujun ~]# mail -s “test01” alice < /etc/hosts


image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

你可能感兴趣的:(Linux输入输出(重定向))