之前看到如下shell 命令,一头雾水:
ls temp >list.txt 2>&1
ls temp >/dev/null 2>&1
查阅之后,明白此语句含义,特此记录.
首先说明几点:
- 在unix和类unix(linux之类)中以文件描述符的形式打开一个文件,这个文件描述符是一个非负数。
- 0代表标准输入,1代表标准输出,2代表标准错误输出
- 默认的情况下是1 所以 > 相当于 1>
- 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环境中,标准输入(Standard Input, STDIN)、标准输出(Standard Output, STDOUT)和标准错误输出(Standard Error, STDERR)是非常重要的...
Linux_shell命令_&&_shell脚本_Linux_command
在Linux系统中,"telnet不能用,提示:-bash: telnet: command not found"这一问题通常是由于系统中没有预装telnet客户端或者其路径未被添加到环境变量PATH中导致的。telnet是一个远程登录协议,允许用户通过网络在...
总结来说,`nohup` 命令与重定向操作符的组合,如 `nohup command > /dev/null 2>&1 &`,是 Linux 系统中常用的技术,用于在后台运行进程并丢弃所有输出,以确保进程的持续运行不受用户交互的影响。理解这些基本概念...
在源码管理和软件构建过程中,熟练掌握Linux命令和Shell脚本编程是必不可少的技能,能显著提升工作效率。 此外,文档《工作中常用的linux命令.doc》可能包含了更多特定场景下实用的Linux命令,比如版本控制(git)...
9. **历史记录重定向**:在shell脚本中,`exec`命令可以改变已打开的文件描述符,比如将stdout和stderr重定向到日志文件,然后执行命令:`exec > log.txt 2>&1`。 10. **重定向到/dev/null**:这个特殊的设备会丢弃...
Linux Command Shell 模拟DOS命令是为习惯于Windows命令行环境的用户提供的一个便利工具。在Linux中,shell脚本是一种强大的自动化工具,能够执行各种任务,从简单的命令到复杂的程序逻辑。以下是对如何使用Linux ...
2. 将输出和错误写入同一个文件:`command > all_output 2>&1`。 3. 隐藏命令的错误输出:`command 2>/dev/null`,这会将错误信息丢弃,不显示在终端。 掌握文件描述符的使用,对于编写复杂的Bash脚本和高效管理...
本资料“Linux-shell-command.rar”聚焦于Linux Shell的运用和运维相关的shell技巧,旨在帮助用户提升Linux环境下的工作效率。 首先,让我们深入了解什么是Linux Shell。Shell是Linux操作系统的用户界面,它提供了...
- 标准错误输出重定向:`command 2> error.txt` - 合并标准输出和错误输出:`command &> combined_output.txt` 6. **高级主题**: - **管道操作**:通过管道将一个命令的输出作为另一个命令的输入。 - **信号...
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编程是Linux系统中非常重要的一个环节,它允许用户通过命令行接口编写脚本,自动化执行一系列操作,极大地提高了工作效率。在这个主题中,我们将深入探讨Linux命令行基础以及Shell编程的相关知识。 首先...
例如:if command1 then command2 fi,可以根据 command1 的退出状态执行 command2 或 command3。 九、test 命令 test 命令是 Linux Shell 中的基本命令,test 命令可以检测各种条件,例如数字比较、字符串比较、...
Linux Shell 命令解释步骤程序实现 Linux Shell 命令解释是 Linux 操作系统中最基本也是最重要的一部分,它负责处理用户与操作系统之间的交互动作,并且给出相应的操作系统的输出结果。 Shell 基本上是一个命令...
Linux的shell是操作系统与用户交互的核心工具,相当于DOS时代的COMMAND.COM。shell作为一个命令解释器,允许用户通过命令行界面执行各种系统操作。在Linux的开放源代码环境中,有许多不同的shell,但BASH(Bourne ...
- 将命令的输出和错误都重定向到同一个文件:`command > outfile 2>&1` - 丢弃错误输出:`command 2> /dev/null` 3. **脚本组成与运行**: - 脚本通常以`#!/bin/bash`开头,指定解释器。 - 脚本命名通常以`.sh`...
在Linux Shell中有很多的特殊符号,这对于我们写Shell脚本时要特别留意:一方面要知道这些特殊符号的用法,这些符号用好了可以达到事半功倍的效果;但另一方面要避免这些特殊符号的过度使用而导致脚本难以调试、难以...
linux环境中有2个dba的用户:oracle、erm 还有1个web用户:erm 在linux环境中,这三个用户都可以直接在任意目录下执行该shell脚本,可是在java代码中调用shell脚本时,报了如下4个错误: 1、sqlldr: command not ...
Linux Shell 是Linux操作系统中用于与系统交互的一种命令行接口,它是用户与Linux内核之间的桥梁。Shell不仅可以执行单一的命令,还可以通过脚本文件执行一系列命令,极大地提高了工作效率。这篇参考文档将深入探讨...