bash中 2>&1 & 的解释

1、首先,bash中0,1,2三个数字分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。

2、输入输出可以重定向,所谓重定向输入就是在命令中指定具体的输入来源,譬如 cat < test.c 将test.c重定向为cat命令的输入源。输出重定向是指定具体的输出目标以替换默认的标准输出,譬如ls > 1.txt将ls的结果从标准输出重定向为1.txt文本。有时候会看到如 ls >> 1.txt这类的写法,> 和 >> 的区别在于:> 用于新建而>>用于追加。即ls > 1.txt会新建一个1.txt文件并且将ls的内容输出到新建的1.txt中,而ls >> 1.txt则用在1.txt已经存在,而我们只是想将ls的内容追加到1.txt文本中的时候。

3、默认输入只有一个(0,STDIN_FILENO),而默认输出有两个(标准输出1 STDOUT_FILENO,标准错误2 STDERR_FILENO)。因此默认情况下,shell输出的错误信息会被输出到2,而普通输出信息会输出到1。但是某些情况下,我们希望在一个终端下看到所有的信息(包括标准输出信息和错误信息),要怎么办呢?

       对了,你可以使用我们上面讲到的输出重定向。思路有了,怎么写呢? 非常直观的想法就是2>1(将2重定向到1嘛),行不行呢?试一试就知道了。我们进行以下测试步骤:

1)mkdir test && cd test                ; 创建test文件夹并进入test目录

2)touch a.txt b.c c                          ; 创建a.txt b.c c 三个文件

3)ls > 1                                           ; 按我们的猜测,这句应该是将ls的结果重定向到标准输出,因此效果和直接ls应该一样。但是实际这句执行后,标准输出中并没有任何信息。

4)ls                                                  ; 执行3之后再次ls,则会看到test文件夹中多了一个文件1

5)cat 1                                            ; 查看文件1的内容,实际结果为:1 a.txt b.c c     可见步骤3中 ls > 1并不是将ls的结果重定向为标准输出,而是将结果重定向到了一个文件1中。即1在此处不被解释为STDOUT_FILENO,而是文件1。

4、到了此时,你应该也能猜到2>&1的用意了。不错,2>&1就是用来将标准错误2重定向到标准输出1中的。此处1前面的&就是为了让bash将1解释成标准输出而不是文件1。至于最后一个&,则是让bash在后台执行。

  • 16
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
第一章 BashBash 脚本 .................................................................................................2 1.1.普通 shell 程序.....................................................................................................2 1.1.1. shell 的作用 ...............................................................................................2 1.1.2. shell 类型...................................................................................................2 1.2. Bash 的优势 ........................................................................................................2 1.2.1. Bash 是 GNU Shell......................................................................................2 1.2.2. Bash 独有的特性........................................................................................2 1.3. 执行命令 ............................................................................................................2 1.3.1. 概要 .........................................................................................................2 1.3.2. Shell 内部命令 ...........................................................................................2 1.3.3. 从脚本执行程序.........................................................................................2 1.4. 建立块................................................................................................................2 1.4.1. Shell 建立块...............................................................................................2 1.5. 开发优良脚本......................................................................................................2 1.5.1. 优良脚本的要素.........................................................................................2 1.5.2. 结构 .........................................................................................................2 1.5.3. 术语 .........................................................................................................2 1.5.4. 有序且有逻辑性.........................................................................................2 1.5.5. 一个 Bash 脚本的例子:mysystem.sh..........................................................2 1.5.6. 初始化脚本例子.........................................................................................2 1.6. 总结...................................................................................................................2 1.7. 练习...................................................................................................................2 第二章 编写和调试脚本.....................................................................................................2 2.1. 建立并且运行一个脚本........................................................................................2 2.1.1. 编写与命名 ...............................................................................................2 2.1.2. Script1.sh..................................................................................................2 2.1.3. 执行脚本...................................................................................................2 2.2. 脚本基础 ............................................................................................................2 2.2.1. 哪个 Shell 来执行脚本................................................................................2 2.2.2. 加入注释...................................................................................................2 2.3. 调试 Bash 脚本 ...................................................................................................2 2.3.1. 调试整个脚本............................................................................................2 2.3.2. 调试部分脚本............................................................................................2 Bash 新手指南 3/91 2.4. 总结...................................................................................................................2 2.5. 练习...................................................................................................................2 第三章 Bash 环境 .............................................................................................................2 3.1. Shell 初始化文件..................................................................................................2 3.1.1. 跨系统配置文件.........................................................................................2 3.1.2. 单独用户配置文件 .....................................................................................2 3.1.3. 改变 shell 配置文件....................................................................................2 3.2. 变量...................................................................................................................2 3.2.1. 变量的类型 ...............................................................................................2 3.2.2. 建立变量...................................................................................................2 3.2.3. 导出变量...................................................................................................2 3.2.4. 保留变量...................................................................................................2 3.2.5. 特殊参数...................................................................................................2 3.2.6. 脚本通过变量循环 .....................................................................................2 3.3. 引用字符 ............................................................................................................2 3.3.1. 为何?。。.................................................................................................2 3.3.2. 转义字符...................................................................................................2 3.3.3. 单引用......................................................................................................2 3.3.4. 双引用......................................................................................................2 3.3.5. ANSI−C 引用 .............................................................................................2 3.3.6. Locales..................46................................................................................2 3.4. Shell 扩展............................................................................................................2 3.4.1. 概要 .........................................................................................................2 3.4.2. 括号表达式............................................................................................2 3.4.3. 波浪表达式 ...............................................................................................2 3.4.4. Shell 参数和变量扩展..................................................................................2 3.4.5. 命令替换...................................................................................................2 3.4.6. 算术表达式 ...............................................................................................2 3.4.7. 替换的处理................................................................................................2 3.4.8. Word splitting ............................................................................................2 3.4.9. 文件名扩展 ...............................................................................................2 3.5. 别名...................................................................................................................2 3.5.1. 什么是别名 ...............................................................................................2 3.5.2. 建立和消除别名.........................................................................................2 3.6. 更多 Bash 选项 ...................................................................................................2 3.6.1. 显示选项...................................................................................................2 3.6.2. 改变选项...................................................................................................2 3.7. 总结...................................................................................................................2 3.8. 练习...................................................................................................................2 第四章 正则表达式 ...........................................................................................................2 4.1. 正则表达式.........................................................................................................2 4.1.1. 什么是正则表达式 .....................................................................................2 4.1.2. 正则表达式 metacharacters........................................................................2 4.1.3. Basic versus 扩展正则表达式......................................................................2 Bash 新手指南 4/91 4.2. 使用 Grep 的例子 ................................................................................................2 4.2.1. 什么是 Grep?.............................................................................................2 4.2.2. Grep 与正则表达式.....................................................................................2 4.3. 模式匹配使用 Bash 特性......................................................................................2 4.3.1. 字符范围...................................................................................................2 4.3.2. 字符 classes .............................................................................................2 4.4. 总结...................................................................................................................2 4.5. 练习...................................................................................................................2 第五章 GNU SED 流编辑器................................................................................................2 5.1. 介绍...................................................................................................................2 5.1.1. 什么是 sed?...............................................................................................2 5.1.2. sed 命令....................................................................................................2 5.2. 交互编辑 ............................................................................................................2 5.2.1. 打印包含 pattern 的行................................................................................2 5.2.2. 删除包含 pattern 的输入行.........................................................................2 5.2.3. 行的范围...................................................................................................2 5.2.4. 用 sed 查找替换.........................................................................................2 5.3. 非交互编辑 ..................................................................................................2 5.3.1. 从文件读取 sed 命令..................................................................................2 5.3.2. 写输出文件 ...............................................................................................2 5.4. 总结...................................................................................................................2 5.5. 练习...................................................................................................................2 第章 GNU AWK 编程语言...............................................................................................2 6.1. gawk 上路...........................................................................................................2 6.1.1. 什么是 gawk?............................................................................................2 6.1.2. Gawk 命令.................................................................................................2 6.2. 打印程序 ............................................................................................................2 6.2.1. 打印选择的域............................................................................................2 6.2.2. 格式化块...................................................................................................2 6.2.3. 打印命令和正则表达式...............................................................................2 6.2.4. 特殊的 pattern...........................................................................................2 6.2.5. Gawk 脚本.................................................................................................2 6.3. Gawk 变量...........................................................................................................2 6.3.1. 输入块的分隔符.........................................................................................2 6.3.2. 输出的分隔符............................................................................................2 6.3.3. 记录的数量 ...............................................................................................2 6.3.4. 用户定义变量............................................................................................2 6.3.5. 更多例子...................................................................................................2 6.3.6. printf 程序 .................................................................................................2 6.4. 总结...................................................................................................................2 6.5. 练习...................................................................................................................2 第七章 条件语句...............................................................................................................2 7.1. 介绍 if ................................................................................................................2 7.1.1. 概要..........................................................................................................2 Bash 新手指南 5/91 7.1.2.if 的简单应用...............................................................................................2 7.2.更多 if 的高级使用方法..........................................................................................2 7.2.1.if/then/else 结构..........................................................................................2 7.2.2. if/then/elif/else 结构...................................................................................2 7.2.3.if 嵌套语句..................................................................................................2 7.2.4.布尔操作.....................................................................................................2 7.2.5. 使用 exit 语句和 if......................................................................................2 7.3.使用 case 语句......................................................................................................2 7.3.1.简单的条件 .................................................................................................2 7.4.总结.....................................................................................................................2 7.5.练习.....................................................................................................................2 第八章 编写交互脚本........................................................................................................2 8.1.显示用户消息 .......................................................................................................2 8.1.1. 交互与否...................................................................................................2 8.1.2. 使用内建 echo 命令 ...................................................................................2 8.2. 捕获用户输入......................................................................................................2 8.2.1. 使用内建 read 命令....................................................................................2 8.2.2. 提示用户输入............................................................................................2 8.2.3. 重定向和文件描述符..................................................................................2 8.2.4. 文件输入和输出.........................................................................................2 8.3. 总结...................................................................................................................2 8.4. 练习...................................................................................................................2 第九章 重复性任务 ...........................................................................................................2 9.1. for 循环...............................................................................................................2 9.1.1. 如何工作...................................................................................................2 9.1.2. 例子 .........................................................................................................2 9.2. while 循环...........................................................................................................2 9.2.1. What is it?......................108 .....................................................................2 9.2.2. 例子 .........................................................................................................2 9.3. until 循环 ............................................................................................................2 9.3.1. What is it?......................111 .....................................................................2 9.3.2. 例子 .........................................................................................................2 9.4. I/O 重定向和循环 ................................................................................................2 9.4.1. 输入重定向 ...............................................................................................2 9.4.2. 输出重定向 ...............................................................................................2 9.5. Break 和 continue ................................................................................................2 9.5.1.内建 break..................................................................................................2 9.5.2.内建 continue..............................................................................................2 9.5.3. 例子 .........................................................................................................2 9.6. Making menus with the select built−in...............115 .............................................2 9.6.1. 概要.........................115...........................................................................2 9.6.2. 子菜单......................................................................................................2 9.7.内建 shift..............................................................................................................2 9.7.1. What does it do?............117.......................................................................2 Bash 新手指南 6/91 9.7.2. 例子..........................................................................................................2 9.8. 总结...................................................................................................................2 9.9. 练习...................................................................................................................2 第十章 深入变量...............................................................................................................2 10.1. 变量种类 ..........................................................................................................2 10.1.1. 概要 assignment of values........120 .........................................................2 10.1.2. 使用内建 declare .....................................................................................2 10.1.3. 常量........................................................................................................2 10.2. 数组变量...........122..........................................................................................2 10.2.1. 创建数组.................................................................................................2 10.2.2. Dereferencing the 变量 in an array.....................122 ................................2 10.2.3. 删除数组变量 ..........................................................................................2 10.2.4. 数组例子.................................................................................................2 10.3. Operations on 变量 ...........................................................................................2 10.3.1. Arithmetic on 变量.................126 ............................................................2 10.3.2. 变量的长度..............................................................................................2 10.3.3. 变量的转变..............................................................................................2 10.4. 总结.................................................................................................................2 10.5. 练习.................................................................................................................2 第十一章 函数..................................................................................................................2 11.1. 介绍.................................................................................................................2 11.1.1. 什么是函数?............................................................................................2 11.1.2. 函数语法.................................................................................................2 11.1.3. 函数参数的位置....................................................................................2 11.1.4. 显示函数.................................................................................................2 11.2. 脚本函数的例子.............................................................................................2 11.2.1. 循环利用.................................................................................................2 11.2.2. 设置路径.................................................................................................2 11.2.3. 远程备份.................................................................................................2 11.3. 总结.................................................................................................................2 11.4. 练习.................................................................................................................2 第十二章 捕捉信号 ...........................................................................................................2 12.1. 信号.................................................................................................................2 12.1.1. 介绍........................................................................................................2 12.1.2. kill 信号的使用 .........................................................................................2 12.2. 陷阱.................................................................................................................2 12.2.1. 概要........................................................................................................2 12.2.2. Bash 怎样解释陷阱...................................................................................2 12.2.3. 更多例子.................................................................................................2 12.3. 总结.................................................................................................................2 12.4. 练习.................................................................................................................2 附录 A Shell 特性 ..............................................................................................................2 A.1.常用特性..............................................................................................................2 附录 B GNU 自由文档守则..................................................................................................2

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱有鹏老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值