重庆小潘seo博客

当前位置:首页 > 重庆网络营销 >

重庆网络营销

什么是重定向?重定向简介

时间:2020-11-13 17:07:30 作者:小潘SEO 来源:网络整理
重定向简介 计算机最基础的功能是可以提供输入输出操作。对于Linux系统来说,通常以键盘为默认输入设备,又称标准输入设备;以显示器为默认的输出设备,又称标准

计算机最基础的功能是可以提供输入输出操作。对于Linux系统来说,通常以键盘为默认输入设备,又称标准输入设备;以显示器为默认的输出设备,又称标准输出设备。所谓重定向,就是将原本应该从标准输入设备(键盘)输入的数据,改右其他文件或设备输入,或将原本应该输出到标准输出设备(显示器)的内容,改由输出到其他文件或设备上。

文件标识符是重定向中很重要的一个概念,Linux使用0到9的整数指明了与特定进程相关的数据流,系统在启动一个进程的同时会为该进程打开三个文件:标准输入(stdin)、标准输出(stdout)、标准错误输出(stderr),分别用文件标识符0、1、2来标识。如果要为进程打开其他的输入输出,则需要从整数3开始标识。默认情况下,标准输入为键盘,标准输出和错误输出为显示器。

对于一条命令的执行过程如下:

I/O重定向符号和用法

简单的说,I/O重定向可以将任何文件、命令、脚本、程序的输出重定向到另外一个文件、命令、程序或脚本。常见的重定向符号和功能如下图:

输出重定向:

输入重定向

绑定重定向

实例:

#显示当前目录文件 test.sh test1.sh test1.sh实际不存在

[root@sunday-test ~]# touch test.sh

[root@sunday-test ~]# ls test.sh test1.sh

ls: cannot access test1.sh: No such file or directory

test.sh

#正确输出与错误输出都显示在屏幕了,现在需要把正确输出写入suc.txt

# 1>可以省略,不写,默认所至标准输出

[root@sunday-test ~]# ls test.sh test1.sh > suc.txt

ls: cannot access test1.sh: No such file or directory

[root@sunday-test ~]# cat suc.tx原创Seo-6.comt

test.sh

#把错误输出,不输出到屏幕,输出到err.txt

[root@sunday-test ~]# ls test.sh test1.sh > suc.txt 2> err.txt

[root@sunday-test ~]# cat err.txt

ls: cannot access test1.sh: No such file or directory

[root@sunday-test ~]#

#继续追加把输出写入suc.txt err.txt “>>”追加操作符

[root@sunday-test ~]# ls test.sh test1.sh >> suc.txt 2>> err.txt

#将错误输出信息关闭掉

[root@sunday-test ~]# ls test.sh test1.sh 2>&-

test.sh

[root@sunday-test ~]# ls test.sh test1.sh 2>/dev/null

test.sh

#&[n] 代表是已经存在的文件描述符,&1 代表输出 &2代表错误输出 &-代表关闭与它绑定的描述符

#/dev/null 这个设备,是linux 中黑洞设备,什么信息只要输出给这个设备,都会给吃掉

#关闭所有输出

[root@sunday-test ~]# ls test.sh test1.sh 1>&- 2>&-

#关闭 1 ,2 文件描述符

[root@sunday-test ~]# ls test.sh test1.sh 1>/dev/null 2>/dev/null

#将1,2 输出转发给/dev/null设备

[root@sunday-test ~]# ls test.sh test1.sh 1>/dev/null 2>&1

#将错误输出2 绑定给 正确输出 1,然后将 正确输出 发送给 /dev/null设备 这种常用

[root@sunday-test ~]# ls test.sh test1.sh &> /dev/null

#& 代表标准输出 ,错误输出 将所有标准输出与错误输出 输入到/dev/null文件

#使用标准输入,在a.txt文件中写入 “hello world”

[root@sunday-test ~]# cat > a.txt << EOF

> hello world

> EOF

[root@sunday-test ~]# cat a.txt

hello world

#在shell编程中,”EOF“通常与”<<“结合使用,“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“

管道符“|”

管道表现为输入输出重定向的一种方法,可以将一个命令的输出内容当做下一个命令的输入内容,可以通过多个简单命令的共同协作来完成较为复杂的工作。