`
runfeel
  • 浏览: 920468 次
文章分类
社区版块
存档分类
最新评论

Linux shell : Command 2>&1

 
阅读更多

之前看到如下shell 命令,一头雾水:


ls temp >list.txt 2>&1
ls temp >/dev/null 2>&1


查阅之后,明白此语句含义,特此记录.


首先说明几点:

  1. 在unix和类unix(linux之类)中以文件描述符的形式打开一个文件,这个文件描述符是一个非负数。
  2. 0代表标准输入,1代表标准输出,2代表标准错误输出
  3. 默认的情况下是1 所以 > 相当于 1>
  4. shell命令的执行是从左往右

ls temp >list.txt 2>&1 (ps:temp是个不存在的目录)
ls temp >list.txt :
把标准输出重定向到list.txt文件中,在这里,就是把temp目录下所有的文件,列出来,然后输出到list.txt文件
如果没有这个重定向,那么标准输出默认是控制台
标准输出的句柄应该是1 ,所以,完整的写法应该是:ls temp 1>list.txt


2>&1 :
在此处 ,表示把标准错误输出写入到list.txt文件
经过这个重定向,标准输出和标准错误输出都重定向到了list.txt中
结果如下:
root:ls temp >list.txt 2>&1
root:/opt/tmp # more list.txt
ls: cannot access temp: No such file or directory //error 信息在文件里


ls temp >/dev/null 2>&1

这个表示把标准输出,以及标准错误输出都舍弃了,不显示也不保存


如果换一下顺序,如何?
ls temp 2>&1 >list.txt
标准错误输出定向到控制台,标准内容输出定向到list.txt
结果如下:
root:/opt/tmp # ls temp 2>&1 >out.txt
ls: cannot access temp: No such file or directory //error信息直接输出到控制台


总结:
ls temp :表示标准内容输出和标准错误都输出到控制台
等同于:ls temp>&1
ls temp >list :表示标准内容输出到list文件中,标准错误输出还是在控制台
等同于:ls temp 1>list
ls temp >list 2>&1 :表示标准内容输出到list文件中,标准错误输出也在list文件中
等同于:ls temp >list 2>list
ls temp 1>list 2>list
ls temp 1>list 2>&1

ls temp 2>& >list :标准错误输出也在控制台,表示标准内容输出到list文件中
等同于:ls temp 2>& 1>list




参考文献:

http://www.cnblogs.com/caolisong/archive/2007/04/25/726896.html
http://www.ningoo.net/html/2007/shell_scripts_stderr_stdout.html

分享到:
评论

相关推荐

    linux shell 中 2>&1的含义

    ### Linux Shell 中 "2>&1" 的含义及应用 #### 基础概念 在Linux Shell环境中,标准输入(Standard Input, STDIN)、标准输出(Standard Output, STDOUT)和标准错误输出(Standard Error, STDERR)是非常重要的...

    Linux_shell命令_&&_shell脚本_Linux_command.zip

    Linux_shell命令_&&_shell脚本_Linux_command

    linux command & shell

    在源码管理和软件构建过程中,熟练掌握Linux命令和Shell脚本编程是必不可少的技能,能显著提升工作效率。 此外,文档《工作中常用的linux命令.doc》可能包含了更多特定场景下实用的Linux命令,比如版本控制(git)...

    telnet不能用 提示:-bash: telnet: command not found

    在Linux系统中,"telnet不能用,提示:-bash: telnet: command not found"这一问题通常是由于系统中没有预装telnet客户端或者其路径未被添加到环境变量PATH中导致的。telnet是一个远程登录协议,允许用户通过网络在...

    一文学会重定向.zip

    9. **历史记录重定向**:在shell脚本中,`exec`命令可以改变已打开的文件描述符,比如将stdout和stderr重定向到日志文件,然后执行命令:`exec > log.txt 2>&1`。 10. **重定向到/dev/null**:这个特殊的设备会丢弃...

    用Linux Command Shell模拟DOS命令

    Linux Command Shell 模拟DOS命令是为习惯于Windows命令行环境的用户提供的一个便利工具。在Linux中,shell脚本是一种强大的自动化工具,能够执行各种任务,从简单的命令到复杂的程序逻辑。以下是对如何使用Linux ...

    Bash中文件描述符的详细介绍

    2. 将输出和错误写入同一个文件:`command > all_output 2>&1`。 3. 隐藏命令的错误输出:`command 2>/dev/null`,这会将错误信息丢弃,不显示在终端。 掌握文件描述符的使用,对于编写复杂的Bash脚本和高效管理...

    详解nohup /dev/null 2>&1 含义的使用

    总结来说,`nohup` 命令与重定向操作符的组合,如 `nohup command > /dev/null 2>&1 &`,是 Linux 系统中常用的技术,用于在后台运行进程并丢弃所有输出,以确保进程的持续运行不受用户交互的影响。理解这些基本概念...

    Linux-shell-command.rar_linux shell 运维_运维 shell

    本资料“Linux-shell-command.rar”聚焦于Linux Shell的运用和运维相关的shell技巧,旨在帮助用户提升Linux环境下的工作效率。 首先,让我们深入了解什么是Linux Shell。Shell是Linux操作系统的用户界面,它提供了...

    Linux Shell Scripting(linux shell编程)

    - 标准错误输出重定向:`command 2> error.txt` - 合并标准输出和错误输出:`command &> combined_output.txt` 6. **高级主题**: - **管道操作**:通过管道将一个命令的输出作为另一个命令的输入。 - **信号...

    linux-shell:操作系统课程 Linux Shell 模仿

    this program imitates the Linux Shell Commands is include all the BASH commands (ls, echo, gedit, rm,write to file, etc) to run the commands just type them as usual ##用法: 1. open Terminal ...

    linux shell 编程1

    Linux Shell编程是Linux系统中非常重要的一个环节,它允许用户通过命令行接口编写脚本,自动化执行一系列操作,极大地提高了工作效率。在这个主题中,我们将深入探讨Linux命令行基础以及Shell编程的相关知识。 首先...

    linuxshell脚本学习笔记.pdf

    例如:if command1 then command2 fi,可以根据 command1 的退出状态执行 command2 或 command3。 九、test 命令 test 命令是 Linux Shell 中的基本命令,test 命令可以检测各种条件,例如数字比较、字符串比较、...

    Linux下Shell命令解释步骤程序实现

    Linux Shell 命令解释步骤程序实现 Linux Shell 命令解释是 Linux 操作系统中最基本也是最重要的一部分,它负责处理用户与操作系统之间的交互动作,并且给出相应的操作系统的输出结果。 Shell 基本上是一个命令...

    Linux的shell好比DOS的COMMAND.COM,

    Linux的shell是操作系统与用户交互的核心工具,相当于DOS时代的COMMAND.COM。shell作为一个命令解释器,允许用户通过命令行界面执行各种系统操作。在Linux的开放源代码环境中,有许多不同的shell,但BASH(Bourne ...

    Linux详细教程大全之shell脚本基础4-管道IO重定向等.docx

    - 将命令的输出和错误都重定向到同一个文件:`command > outfile 2>&1` - 丢弃错误输出:`command 2> /dev/null` 3. **脚本组成与运行**: - 脚本通常以`#!/bin/bash`开头,指定解释器。 - 脚本命名通常以`.sh`...

    Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)

    在Linux Shell中有很多的特殊符号,这对于我们写Shell脚本时要特别留意:一方面要知道这些特殊符号的用法,这些符号用好了可以达到事半功倍的效果;但另一方面要避免这些特殊符号的过度使用而导致脚本难以调试、难以...

    java调用shell脚本执行sqlldr与存储过程

    linux环境中有2个dba的用户:oracle、erm 还有1个web用户:erm 在linux环境中,这三个用户都可以直接在任意目录下执行该shell脚本,可是在java代码中调用shell脚本时,报了如下4个错误: 1、sqlldr: command not ...

    Linux Shell 参考文档

    Linux Shell 是Linux操作系统中用于与系统交互的一种命令行接口,它是用户与Linux内核之间的桥梁。Shell不仅可以执行单一的命令,还可以通过脚本文件执行一系列命令,极大地提高了工作效率。这篇参考文档将深入探讨...

Global site tag (gtag.js) - Google Analytics