Linux之Shell编程(12)--Shell输入/输出重定向实例演示

一.Shell重定向简介

从标题我们可以知道,Shell的重定向有两种,第一种是输入重定向,另外一种就是输出重定向。其实,输入输出重定向就是改变输入与输出的方向。

输入输出方向是什么?
1.从键盘读取输入的数据,把数据拿到程序中(C语言程序、Shell 脚本程序等)使用,这是一种标准的输入方向,从键盘到程序。如果改变了它的方向,数据就从其它地方流入,这就是输入重定向

2.程序中会产生数据,这些数据直接呈现到屏幕上,这是另一种标准的输出方向,也就是从程序到显示器。如果改变了它的方向,数据就流向其它地方,这就是输出重定向

二.Shell输出重定向

输出重定向是指命令的结果不输出到显示器上,而是输出到其它地方,一般是文件中,这样做的好处是可以将结果保存起来

输出重定向命令如下:

命令 解释
command > file 将输出重定向到 file
command >> file 将输出以追加的方式重定向到 file。
command 2>file 以覆盖的方式,把 command 的错误信息输出到 file 文件中。
command 2>>file 以追加的方式,把 command 的错误信息输出到 file 文件中。
command >file 2>&1 以覆盖的方式,把正确输出和错误信息同时保存到同一个文件(file)中。
command >>file 2>&1 以追加的方式,把正确输出和错误信息同时保存到同一个文件(file)中。
command >file1 2>file2 以覆盖的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。
command >>file1 2>>file2 以追加的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。

注意:
1.在输出重定向中,>代表的是覆盖,>>代表的是追加。
2.command >file或者command >> file,完整的写法是command 1 >file或者command 1 >> file.默认为1,即标准输出文件。
3.如果大于1则必须写,比如:command 2>file,即将错误的输出结果重定向到file中,这里的2和>之间不能有空格。

输出重定向实例演示:

#!/bin/bash
i=10
echo $i >log.txt

Linux之Shell编程(12)--Shell输入/输出重定向实例演示_第1张图片
发现在本地会生成log.txt,打开会得到10。
在这里插入图片描述
如果改成echo $i >>log.txt
Linux之Shell编程(12)--Shell输入/输出重定向实例演示_第2张图片
在这里插入图片描述
演示输入错误内容
Linux之Shell编程(12)--Shell输入/输出重定向实例演示_第3张图片

#!/bin/bash
file="Java"
cd $file 2>>log.txt

结果:
Linux之Shell编程(12)--Shell输入/输出重定向实例演示_第4张图片
这里执行output.sh不会报错,而是会把错误信息重定向到log.txt中。
Linux之Shell编程(12)--Shell输入/输出重定向实例演示_第5张图片
去掉2直接运行会报错。
在这里插入图片描述
循环输出重定向实例演示:

#!/bin/bash
for i in i love china
do
    echo $i >>log.txt
done

Linux之Shell编程(12)--Shell输入/输出重定向实例演示_第6张图片
结果:
Linux之Shell编程(12)--Shell输入/输出重定向实例演示_第7张图片
演示将正确信息和错误信息同时重定向到文件中

#!/bin/bash
for i in i love china
do
    echo $i >>log.txt
done

j=Java
cd $j >>log.txt 2>&1

Linux之Shell编程(12)--Shell输入/输出重定向实例演示_第8张图片
结果:
Linux之Shell编程(12)--Shell输入/输出重定向实例演示_第9张图片

三.Shell输入重定向

输入重定向就是改变输入的方向,不使用键盘作为命令输入的来源,而是使用文件作为命令的输入。

输入重定向命令如下:

命令 解释
command 将 file 文件中的内容作为 command 的输入。
command file2 将 file1 作为 command 的输入,并将 command 的处理结果输出到 file2。
command < 从键盘中读取数据,直到遇见结束符 END 才停止(结束符可以是任意的字符串,可以自己定义)。

和输出重定向类似,输入重定向的写法由>变为<,完整的写法是command 0

实例演示输入重定向
以log.txt作为输入,输出log.txt的行数。
Linux之Shell编程(12)--Shell输入/输出重定向实例演示_第10张图片
将log.txt作为输入,将对log.txt操作的结果输出到outfile.txt。
在这里插入图片描述
从键盘读取数据,直到遇到END才结束。
Linux之Shell编程(12)--Shell输入/输出重定向实例演示_第11张图片
逐行读取文件内容。
在这里插入图片描述

#!/bin/bash
while read str; do
    echo $str
done 

结果:
在这里插入图片描述

今天是高考的第一天,我在这里祝愿各位高考的学生旗开得胜。

你可能感兴趣的:(Shell,linux,shell)