`

Linux Shell >/dev/null 2>&1解释(转)

 
阅读更多

shell中可能经常能看到:>/dev/null 2>&1
命令的结果可以通过%>的形式来定义输出
分解这个组合:“>/dev/null 2>&1” 为五部分。
1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt
2:/dev/null 代表空设备文件
3:2> 表示stderr标准错误

4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
5:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 "1>/dev/null"
因此,>/dev/null 2>&1也可以写成“1> /dev/null 2> &1”
那么本文标题的语句执行过程为:
1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 :接着,标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
说清楚了吗,大家理解下吧!
顺便对比述说下这么用的好处!

最常用的方式有:
command > file 2>file  与command > file 2>&1
它们 有什么不同的地方吗?

首先command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command  > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道。

而command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容。

从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会command > file 2>&1 这样的写法。

分享到:
评论

相关推荐

    linux shell 中 2>1的含义

    linux shell 中”2>&1″的含义 脚本: nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_...

    一个简单的防CC攻击Shell脚本分享

    /bin/shcd /var/log/httpd/cat access_log|awk ‘{print $1}’|sort|uniq -c|sort -n -r|head -n 20 > acp /dev/null access_logcp /dev/null error_logcp /dev/null limit.shcp /dev/null c#awk ‘{print $2}’ a|...

    从数据库中取变量传递给shell,生成环境变量

    #Sqlplus user/pwd@ip @myshellpara.sql $> /dev/null Sqlplus user/pwd@ip @myshellpara.sql $> /dev/null chmod 777 myshellvar_export.sh #注意.这里的技巧,变相执行 myshellvar_export.sh,生成linux 系统的环境...

    Linux 命令 shell 重定向 >

    Linux 命令 shell 重定向 > 1、清空内容两种方式: cat /dev/null > filename > filename 2、清空文件内容,将显示结果重定向到文件 echo “this is a test” > filename 3、输入输出流组合 0:标准输入 1:标准...

    shell编程中的字符串截取方法小结

    6.echo $a|dd bs=1 count=8 2>/dev/null   二、按指定的字符串截取 1、第一种方法: ${varible##*string} 从左向右截取最后一个string后的字符串 ${varible#*string}从左向右截取第一个string后的字符串 ${varible%

    Linux 服务器中提高CPU使用率脚本

    1、创建存放脚本文件目录 mkdir -p /etc/press chmod 777 /etc/press 2、启动定时任务进程 echo 'systemctl start crond.service' >> /etc/rc.d/rc.local 3、将定时任务策略输入至定时任务进程中, 每天18点启动一...

    SHELL脚本监控JAVA进程的代码

    脚本内容:java_check.sh #! /bin/bash # if [ -z `pidof java` ]; then ... /usr/local/tomcat/bin/startup.sh >/dev/null 2>&1 sleep 30 netstat -tnlp >> /data/logs/java_check.log echo -e “r

    hadoop+hive+mapreduce的java例子

    hive --service hiveserver >/dev/null 2>/dev/null & 我们可以通过CLI、Client、Web UI等Hive提供的用户接口来和Hive通信,但这三种方式最常用的是CLI;Client 是Hive的客户端,用户连接至 Hive Server。在启动 ...

    crontab用法详解

    1. 当程式在你所指定的时间执行后,系统会寄一封信给你,显示该程式执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可。 2. %在crontab中被认为是newline,要用\来escape才行...

    dotfiles:LinuxmacOS内容的个人配置,包括SSH密钥和PGP。 该存储库是我的点文件的公共前端。 git.ripGitLab.com上的私人

    $( command -v curl >> /dev/null && echo curl -o- || wget -q0- ) https://raw.githubusercontent.com/AndreiJirohHaliliDev2006/.dotfiles/main/bootstrap-linux.sh | bash - # # Done? unset

    一个用了统计CPU 内存 硬盘 使用率的shell脚本

    /bin/bash#This script is use for describle CPU Hard Memery Utilizationtotal=0idle=0system=0user=0nice=0mem=0vmexec=/usr/bin/vmstatwhich sar > /dev/null 2>&1if [ $? -ne 0 ]then ver=`vmstat -V | awk ...

    【Linux】shell简易脚本收录(保持更新)

    1.实现批量添加 20 个用户,用户名为:user1-20,密码为 user 后面跟着 5 个随机字符或数字 [root@localhost ~]# cat useradd.sh ... echo user$password | passwd --stdin user$number &> /dev/null echo

    shell脚本学习手册

    Shell教程入门 3 1、shell脚本 3 2、shell脚本实践 4 Shell变量 4 1、使用变量 5 2、只读变量 5 3、删除变量 5 4、变量类型 6 5、shell字符串 6 6、Shell数组 7 ...5、/dev/null文件 33 Shell文件包含 33

    ap6212a0_a33_sc3817r_神舟验证版本_借用nvram_ap6210这个配置文件_20170626_1834没有外层目录.7z

    [ 3.968638] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 3.968734] [mmc]: mclk 0xf1c20090 0xc100000b [ 3.989421] Bluetooth: BNEP filters: protocol ...

    gro:大细菌小菌落生长规格和模拟软件。 有关更多信息,请参见下面列出的gro网站。

    格罗 大细菌小菌落生长规格和模拟软件。 文献资料 。 ...do shell script "cd \"" & dir & "\" && gro.app/Contents/MacOS/gro > /dev/null 2>&1 &" 要使用此脚本,请将其放在gro目录中名为run_gr

    shell脚本输出多个主机的网卡速率的方法

    背景: 记录下之前的写过的shell脚本,需要整理出各个主机的各个网卡速率,网卡名称为bond0到bond3,使用ethtool bond1命令可以查看相应网卡...do echo bond$i `/usr/sbin/ethtool bond$i 2 > /dev/null | grep Speed`

    shell脚本实现多进程运行的方法示例

    ping $ip -c 4 &>/dev/null; if [ $? -eq 0 ]; then echo $ip is alive fi ) & done wait 解释 重点是在于()和&,把for里面需要执行的命令当作一个组合并在后台运行。 wait等待所有后台子程序执行完毕 执行效率 使用...

    shell脚本:查看系统基础信息

    mkdir /var/log/everyone &>/dev/null system_status=/var/log/everyone/today.txt date=`date +%Y-%m-%d %H:%M:%S` user=`who -H` hostname=`hostname` ip=`ifconfig | awk 'NR==2 {print $2}'` system=`cat /etc/...

    让Linux下的cron以秒为单位执行shell脚本的3种方法

     /home/somedir/scripts.sh 2>/dev/null &  sleep 3 done 注意第一次运行时请不要使用 bash kick.sh & 这种后台运行的方式,它会僵死的。 可以把它放到计划任务使其运行,然后将计划任务中的此条目删除即可。最后...

    Shell字符串截取的详细方法

    一、Linux shell 截取字符变量的前8位,有方法如下: 代码如下:1.expr substr “$a” 1 82.echo $a|awk ‘{print substr(,1,8)}’3.echo $a|cut -c1-84.echo $5.expr $a : ‘\(.\\).*’6.echo $a|dd bs=1 count=8 2>...

Global site tag (gtag.js) - Google Analytics