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
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 在Linux,退出bash命令有以下几种方式: 1. 使用exit命令:在命令行输入exit,按下回车键即可退出bash命令。 2. 使用Ctrl + D快捷键:在命令行输入Ctrl + D组合键,即可退出bash命令。 3. 使用logout命令:在命令行输入logout,按下回车键即可退出bash命令。 以上三种方式都可以有效地退出bash命令,具体使用哪种方式取决于个人习惯。 ### 回答2: 在LinuxBash是最常用的命令行解释器之一。Bash虽然功能强大、灵活,但是有时候我们需要退出它才能进行其他的操作或者重新开启一个新的Bash窗口。 有几种常见的方法可以退出Bash。 1. 使用exit命令 在Bash命令行界面,键入exit命令并按回车键,Bash会将当前的会话结束,并返回到上一级的Shell。 2. 使用Ctrl+D快捷键 在Bash命令行界面,按下Ctrl+D键组合,则会立即退出Bash并返回到上一级的Shell。 3. 使用logout命令 在Bash命令行界面,键入logout并按回车键,Bash将会退出并返回到上一级Shell。 无论是哪种退出方式,都会让Bash结束当前的会话,并返回到上一级Shell。如果当前的Shell已经是最上层的Shell,那么退出Bash会使得整个终端窗口关闭。 总之,在Linux,退出Bash最简单的方式就是使用exit命令或者Ctrl+D快捷键。这两种方式都可以在Bash命令行界面快速、轻松地结束当前的会话。 ### 回答3: 在LinuxBash是一种常用的命令行界面(CLI),可用于控制操作系统并运行各种应用程序。由于bash具有强大的功能和灵活性,因此它已经成为了Linux用户喜爱的命令行工具。除了常用的操作外,用户在使用Bash时如何退出也是非常重要的问题。下面是退出Bash的几种方法。 1. 使用exit命令:在Bash,用户可以使用exit命令结束当前的shell会话,并返回到上一级会话或关闭终端窗口。输入exit并按下回车键即可退出Bash,也可以使用快捷键Ctrl+D来代替exit命令。 2. 使用logout命令:Linux,logout命令与exit命令作用相似。使用logout命令将结束当前Bash会话,并返回到上一级会话或关闭终端窗口。可以输入logout并按下回车键来执行此命令。 3. 使用Ctrl+C断当前命令:在Bash命令行下执行某些命令时,可能需要断这些正在运行的命令。可以按下Ctrl+C键来断当前命令,并返回到命令行提示符下,然后可以输入exit或logout来退出Bash。 4. 使用Ctrl+D键结束当前输入:在Bash界面,当用户需要输入某些命令或参数时,按下Ctrl+D键将触发EOF(End Of File)标记,并立即结束当前输入行。如果此时未输入任何命令,则Bash会话将自动结束,并返回到上一级会话或关闭终端窗口。 总之,在Linux退出Bash有多种方法。可以根据实际情况选择不同的退出方式。此外,需要特别注意的是,Bash使用exit或logout命令时,会话尚未保存的更改将无法保存,因此在结束会话前应该保存已经更改的内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

朱有鹏老师

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值