文档章节

Bash重定向详解

陶小陶
 陶小陶
发布于 09/26 03:35
字数 1112
阅读 15
收藏 0

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
    document
delimiter

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文件描述符关闭,即在管道中后续相关文件描述符将不能使用了。

© 著作权归作者所有

共有 人打赏支持
陶小陶
粉丝 1
博文 29
码字总数 42009
作品 0
深圳
程序员
私信 提问
Bash重定向详解

首先我们先回顾下bash现有的重定向符号 1.重定向输入输出,目标是文件word igi@igi-debian:~$ touch testfileigi@igi-debian:~$ cat testfileigi@igi-debian:~$ set -o noclobberigi@igi-de...

MUIWINGKUE
2013/05/10
100
0
【转】Linux/Unix笔记本

文章转自:http://www.cnblogs.com/ggjucheng/archive/2012/08/18/2645321.html#2566680 Linux/Unix   了解Linux     Linux入门——个人感想   初入Linux     Windows XP硬盘安装...

张玉涛
2012/11/30
0
0
第七章:nginx的rewrite规则详解

模块ngxhttprewrite_module 该ngxhttprewrite_module模块用于使用PCRE正则表达式更改请求URI,返回重定向,并有条件地选择配置。 先给一段官方demo config 一. 正则表达式 ~ 为区分大小写匹配...

FantJ
01/02
0
0
Linux目录(Centos)

easy808
2017/12/01
0
0
linux从小白到linux资深专家之路

linux从小白到linux资深专家之路 为什么学Linux,理由如下: Linux是免费; Linux是开源的,你可以修改源代码; Linux是开放的,有广泛的社区; 学习Linux可以更好的掌握计算机技术; Linux是...

lxm111111
2016/07/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
31分钟前
1
0
hadoop垃圾回收站

在生产生,hdfs回收站必须是开启的,一般设置为7天。 fs.trash.interval 为垃圾回收站保留时间,如果为0则禁用回收站功能。 fs.trash.checkpoint.interval 回收站检查点时间,一般设置为小于...

hnairdb
昨天
1
0
腾讯与Github的魔幻会面背后的故事…

10月22日,腾讯开源管理办公室有幸邀请到Github新晋CEO Nat Friedman,前来鹅厂参观交流。目前腾讯已经有近70个项目在Github上开源,共获得17w stars,世界排名11位。Github是腾讯开源的主阵...

腾讯开源
昨天
1
0
单例模式

单例模式(Singleton pattern)属于创建型设计模式。 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对...

NinjaFrog
昨天
1
0
TypeScript基础入门之装饰器(三)

转载 TypeScript基础入门之装饰器(三) 继续上篇文章[TypeScript基础入门之装饰器(二)] 访问器装饰器 Accessor Decorator在访问器声明之前声明。 访问器装饰器应用于访问器的属性描述符,可用...

durban
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部