输入重定向作用
命令<文件&将指定文件作为命令的输入设备
命令<<分节符&表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串xargs从标准输入构建和执行命令行。
命令<文件1>文件2&将文件1作为命令的输入设备,该命令的执行结果输出到文2中。
输出重定向
0,标准输入(键盘)
1,标准输出
2,标准错误,
3+,进程在执行过程中打开的其他文件。
&:表示正确错误混合输出
> ----覆盖
>> ----追加
正确输出: 1> 1>> 等价于 > >>
错误输出: 2> 2>>
管道“ | “将管道前的输出内容传递到管道后的最后一个位置。
xargs可以将stdin中的内容以空格或换行符进行分隔的数据,形成以空格分隔的参(arguments),传递给其他命令。
因为以空格作为分隔符,所以有一些文件名或其他意义的字符串内含空格时,xargs 可能会误判。之所以要用到 xargs,是因为很多命令不支持使用管道 | 传递参数。
-exec和xargs的区别
-exec:参数是一个一个传递的,传递一个参数执行一次命令。
xargs:将前一个命令的标准输出传递给下一个命令,作为它的参数转换成下一个命令的参数列表。
===============
exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好;
exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \来转义; 作为命令的结束符,书写不便。
xargs不能操作文件名有空格的文件;
综上,如果要使用的命令支持一次处理多个文件,并且也知道这些文件里没有带空格的文件,那么使用 xargs比较方便; 否则,就要用exec了。
打包压缩一起
语法:
#tar cvzf file.tar.gz 源文件
#tar cvjf file.tar.bz2 源文件
z:表示gz压缩
j:表示bz2压缩
解压解包一起
语法:
#tar xvzf 压缩文件 [-C 解压路径]
#tar xvjf 压缩文件 [-C 解压路径]