重定向> >>与标准输入、标准输出、标准错误输出

当linux执行一个程序的时候,会自动打开三个流,标准输入*(standard input),标准输出(standard output),标准错误输出(standard error)*,比如在打开命令行时,默认情况下,命令行的标准输入连接到键盘,标准输出和标准错误都连接到屏幕,尽管三个流都打开,但他会根据需要使用。

重定向

>

> 可以改变文本流的方向,指定输出目的地。(覆盖)

例子:

输入命令

ls > aa.txt

解释:

改变ls命令用来显示内容的容器,默认容器是屏幕,现将容器改为aa.txt

执行结果:

打开aa.txt可看到所有ls命令的显示内容

「注意」:

  • 若aa.txt是一个不存在文件,重定向时计算机会新建一个aa.txt文件,并将命令行的标准输出指向这个文件。

  • 若aa.txt是一个已存在文件,重定向时会覆盖原aa.txt文件中的内容。

样例:

  1. echo ok > a.txt

    解释:echo的作用是将文本流导向标准输出

    执行结果:ok写入a.txt中

  2. cat < a.txt

    解释:将cat标准输入只想a.txt,文本会从文件流到cat,然后输出到屏幕上

    执行结果:同cat a.txt

  3. cat < a.txt > b.txt

    解释:a.txt中内容复制到了b.txt中

  4. cat > a.txt < b.txt

    解释:b.txt中内容复制到了a.txt中

>&

&表示等同于的意思

例子:

假设void是一个不存在的目录,当我们执行

cd void > a.txt

屏幕出现错误提示

bash: cd: void: No such file or directory

当我们执行

cd void >& a.txt

错误信息被导向a.txt

样例:

cd void 2 > a.txt > b.txt

解释:标准错误对应的总是2,所有有以上写法。标准错误输出到a.txt,标准输出输出到b.txt

追加

>>

>>可以改变文本流的方向,指定输出目的地。(追加)

例子:

cat a.txt >> b.txt

将cat a.txt命令的标准输出指向b.txt文件

执行结果:

打开b.txt可看到a.txt的内容被添加到原b.txt内容后面

「注意」:

  • 若b.txt是一个不存在文件,重定向时计算机会新建一个b.txt文件,并将命令行的标准输出指向这个文件。

  • 若b.txt文件已存在,重定向时会追加到原b.txt中内容后面,不覆盖。

样例:

  1. 做输入分隔符

    分隔符可以是任意字符。

cat > a.txt << end

​ 当执行cat > a.txt << end,命令并没有结束,cat命令在等待你给他输入数据,当我们敲入end后,cat命令才结束。end之前输入的字符都被写到a.txt文件中,这就是输入分隔符的作用。

高级用法

  1. >/dev/null

    这条命令的作用是将标准输出1重定向到/dev/null中。 /dev/null代表linux的空设备文件,所有王这个文件里写入的内容都会丢失,俗称“黑洞”。执行此命令后,标准输出就会不再存在,没有任何地方能找到输出的内容。

  2. 2>&1

    这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,也就是错误输出会和标准输出输出到同一个地方。

  3. >/dev/null 2>&1 VS 2>&1 >/dev/null

    从左到右地来分析2>&1 >/dev/null

    2>&1,将错误输出绑定到标准输出上。由于此时的标准输出是默认值,也就是输出到屏幕,所以错误输出会输出到屏幕。
    >/dev/null,将标准输出1重定向到/dev/null中。

    我们用一个表格来更好地说明这两条命令的区别:

    命令标准输出错误输出
    >/dev/null 2>&1丢弃丢弃
    2>&1 > /dev/null丢弃屏幕
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值