& 表示任务在后台执行,如要在后台运行
例如 cp -R original/dir/ backup/dir/
这个命令的目的是将 original/dir/
的内容递归地复制到 backup/dir/
中。虽然看起来很简单,但是如果原目录里面的文件太大,在执行过程中终 端就会一直被卡住。所以,可以在命令的末尾加上一个 &
号,将这个任务放到后台去执行:
cp -R original/dir/ backup/dir/ &
任务被放到后台执行之后,就可以立即继续在同一个终端上工作了,甚至关闭终端也不影响这个任务的正常执行。需要注意的是,如果要求这个任务输出内容到标准输出中(例如 echo
或 ls
),即使使用了 &
,也会等待这些输出任务在前台运行完毕。
隐藏之后的后续命令 https://linux.cn/article-10587-1.html?pr
&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo ‘1‘ && echo ‘2’
| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo ‘yes’ | wc -l
|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo “fail”
command>/dev/null 2>&1 &
/dev/null 表示空设备文件
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
command (命令)>/dev/null
其实这条命令是一个缩写版,对于一个重定向命令,肯定是command > a这种形式,它默认等于command 1>a,即将标准输出结果重定向到文件a中。所以command > /dev/null相当于执行了command 1 > /dev/null。执行command产生了标准输出stdout(用1表示),重定向到/dev/null的设备文件中。
2>&1
通过上面command > /dev/null等价于command 1 > /dev/null,那么对于2>&1也就好理解了,2就是标准错误,1是标准输出,那么这条命令不就是相当于把标准错误重定向到标准输出么。但是是&1而不是1,这里&是什么?这里&相当于等效于标准输出。
2>&1,意思是错误输出等同于标准输出。所以使得./test.sh >test.log,可以把标准输出和错误输出全部导入日志test.log里。
注意:2>&1,中间不能有空格。
注意:2>&1,必须写在最后,否则会失去原有意义。
后续组合命令 https://blog.csdn.net/kang19970201/article/details/98968271