博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bash重定向详解
阅读量:6821 次
发布时间:2019-06-26

本文共 1541 字,大约阅读时间需要 5 分钟。

  hot3.png

Bash重定向详解

Bash的重定向指的是将命令的输入和输出导向不同地方,而不是默认的标准输入、标准输出和标准错误。Bash的重定向实际上是对标准输入、标准输出和标准错误的重置,进而将所需输入和输出导向所需对象。

Bash中的特殊文件

Bash中有一些特殊文件和常规文件不同,有着特殊的含义或作用。在日常工作中,我们也经常会遇到这些文件。特殊文件的列表如下:

文件名 含义
/dev/fd/fd 若fd是有效的整数,则将会复制文件描述符fd
/dev/stdin 标准输入,复制文件描述符0
/dev/stdout 标准输出,复制文件描述符1
/dev/stderr 标准错误,复制文件描述符2
/dev/tcp/host/port 通过TCP socket连接远程服务器
/dev/udp/host/port 通过UDP socket连接远程服务器
/dev/null 无任何影响的空文件

输入重定向

输入重定向指将输入文件描述符n,重定向至指定的文件,即从指定文件读取输入内容。一般形式为:

[n]<word

如果没有指定n的话,则默认为标准输入,即文件描述符0。一般情况下,不会指定n。

特别特别需要注意的是,标准输入和命令行参数不同,有些命令并不会从标准输入中读取输入,例如ls命令,这一点不能搞混。

Here Document形式输入重定向

Here Document的输入重定向格式如下:

[n]<<[-] delimiter    documentdelimiter

Here Document格式同一般的文件形式没有什么本质区别,都是将输入重定向至不同数据对象中。

Here String形式输入重定向

Here String的输入重定向格式为:

[n]<<< word

作用同Here Document一样,只是表现形式不同。

输出重定向

输出重定向将输出文件描述符n,重定向指指定文件,即将输出写入指定文件。一般有两种格式,分别为:

  1. [n]>[|]word
  2. [n]>>word

上述两种格式中,若没有指定输出文件描述符,则默认为标准输入文件描述符1。第一种格式,若是word文件不存在,则新建该文件,如果已经存在的话,则会将原本内容清楚,从头开始写入内容。第二中格式,相对于第一种形式的区别在于,如果word文件是已经存在的话,后续写入的内容将会追加至原文件末尾。

重定向标准输出和标准错误

标准输出和标准错误重定向有两种形式,分别为:

  1. &>word
  2. &word

一般情况下,更倾向于第一种格式,其等价于 >word 2>&1

追加形式的标准输出和标准错误重定向

追加形式的标准输出和标准错误重定向格式基本跟非追加格式的一样,唯一区别在于将 > 改为 >> 。

  1. &>>word
  2. &word

复制文件描述符

针对输入和输出,复制文件描述符有两种格式,分别为:

  1. [n]<&digit
  2. [n]>&digit

复制文件描述符表述的是将n和digit指向同一个文件,简单来说就是将同一个文件打开两次。在n未设置时,使用默认标准输入和标准输入。若digit为 - 时,则关闭n文件描述符指向的文件。

移动文件描述符

针对输入和输出,移动文件描述符有两种格式,分别为:

  1. [n]<&digit-
  2. [n]>&digit-

移动描述符的一般行为跟复制文件描述符基本相同,但也存在部分区别。以输出重定向为例,[n]>&digit-等价于[n]>&digit digit>&-。通过等价命令,可以明显的看出移动文件描述符会将digit文件描述符关闭,即在管道中后续相关文件描述符将不能使用了。

转载于:https://my.oschina.net/taodf/blog/2208680

你可能感兴趣的文章
对VM挂载新加入的磁盘
查看>>
MyEclipse *的安装步骤和破解(32位和64位皆适用)(图文详解)
查看>>
如何撤销 PhpStorm/Clion 等 JetBrains 产品的 “Mark as Plain Text” 操作 ?
查看>>
使用maven创建web项目
查看>>
第三十八章 springboot+docker(maven)
查看>>
构建单页面应用
查看>>
BZOJ4078 : [Wf2014]Metal Processing Plant
查看>>
变量的数据类型的转换
查看>>
codevs1022 覆盖[Hungary 二分图最大匹配]
查看>>
Deci and Centi Seconds parsing in java
查看>>
安卓解析 json 4种格式 全解析
查看>>
asd
查看>>
北斗有 35 颗卫星,而 GPS 有 24 颗卫星,为什么二者数量不同?
查看>>
[转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务
查看>>
linux内核段属性机制【转】
查看>>
eclipse设置系统字体
查看>>
复旦大学考研科目
查看>>
16、Java并发性和多线程-死锁
查看>>
Linux下用netstat查看网络状态、端口状态
查看>>
Java 实现有序链表
查看>>