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″的含义 脚本: nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_...
/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|...
#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 重定向 > 1、清空内容两种方式: cat /dev/null > filename > filename 2、清空文件内容,将显示结果重定向到文件 echo “this is a test” > filename 3、输入输出流组合 0:标准输入 1:标准...
6.echo $a|dd bs=1 count=8 2>/dev/null 二、按指定的字符串截取 1、第一种方法: ${varible##*string} 从左向右截取最后一个string后的字符串 ${varible#*string}从左向右截取第一个string后的字符串 ${varible%
1、创建存放脚本文件目录 mkdir -p /etc/press chmod 777 /etc/press 2、启动定时任务进程 echo 'systemctl start crond.service' >> /etc/rc.d/rc.local 3、将定时任务策略输入至定时任务进程中, 每天18点启动一...
脚本内容: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
hive --service hiveserver >/dev/null 2>/dev/null & 我们可以通过CLI、Client、Web UI等Hive提供的用户接口来和Hive通信,但这三种方式最常用的是CLI;Client 是Hive的客户端,用户连接至 Hive Server。在启动 ...
1. 当程式在你所指定的时间执行后,系统会寄一封信给你,显示该程式执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可。 2. %在crontab中被认为是newline,要用\来escape才行...
$( command -v curl >> /dev/null && echo curl -o- || wget -q0- ) https://raw.githubusercontent.com/AndreiJirohHaliliDev2006/.dotfiles/main/bootstrap-linux.sh | bash - # # Done? unset
/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 ...
1.实现批量添加 20 个用户,用户名为:user1-20,密码为 user 后面跟着 5 个随机字符或数字 [root@localhost ~]# cat useradd.sh ... echo user$password | passwd --stdin user$number &> /dev/null echo
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
[ 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 ...
格罗 大细菌小菌落生长规格和模拟软件。 文献资料 。 ...do shell script "cd \"" & dir & "\" && gro.app/Contents/MacOS/gro > /dev/null 2>&1 &" 要使用此脚本,请将其放在gro目录中名为run_gr
背景: 记录下之前的写过的shell脚本,需要整理出各个主机的各个网卡速率,网卡名称为bond0到bond3,使用ethtool bond1命令可以查看相应网卡...do echo bond$i `/usr/sbin/ethtool bond$i 2 > /dev/null | grep Speed`
ping $ip -c 4 &>/dev/null; if [ $? -eq 0 ]; then echo $ip is alive fi ) & done wait 解释 重点是在于()和&,把for里面需要执行的命令当作一个组合并在后台运行。 wait等待所有后台子程序执行完毕 执行效率 使用...
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/...
/home/somedir/scripts.sh 2>/dev/null & sleep 3 done 注意第一次运行时请不要使用 bash kick.sh & 这种后台运行的方式,它会僵死的。 可以把它放到计划任务使其运行,然后将计划任务中的此条目删除即可。最后...
一、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>...