文档章节

Bash重定向详解

陶小陶
 陶小陶
发布于 09/26 03:35
字数 1112
阅读 19
收藏 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
博文 30
码字总数 43885
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu16.04下安装docker

[TOC] 本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安装最新的Docker CE(Community Edition),即Docker社区版,是开发人员和小型团队的理想选择。 1. 开始安装 1.1 由于...

豫华商
56分钟前
6
0
使用XShell工具密钥认证登录Linux系统

如果你是一名Linux运维,那么Linux服务器的系统安全问题,可能是你要考虑的,而系统登录方式有两种,密码和密钥。哪一种更加安全呢? 无疑是后者! 这里我为大家分享用Xshell利器使用密钥的方...

dragon_tech
今天
4
0
day178-2018-12-15-英语流利阅读-待学习

“真蛛奶茶”了解一下?蜘蛛也会产奶了 Lala 2018-12-15 1.今日导读 “蛋白质含量是牛奶的 4 倍,并有着更低的脂肪和含糖量”,听起来诱人又美味的并不是羊奶或豆奶,而是你可能打死都想不到...

飞鱼说编程
今天
11
0
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents

场景重现 npm install --verbose 安装依赖的时,出现如下警告 强迫症患者表示不能接受 npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):npm WARN......

taadis
今天
2
0
OSChina 周六乱弹 —— 你一口我一口多咬一口是小狗

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文 :分享Roy Orbison的单曲《She's a Mystery to Me》 《She's a Mystery to Me》- Roy Orbison 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
422
6

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部