xargs命令
Linux中经常把一个命令的结果作为另一个命令的输入,这个过程中也许会遇到参数过长的问题,这个时候就需要xargs命令了。
写的很挫。
描述:xargs从标准输入读取项目,并用空格或者回车分隔它们,并且分别把变量传给接下来的命令(默认命令是 /bin/echo)。
由于Unix文件系统里的文件名可以包含空格和换行符,所以默认情况下把这些文件名传给xargs是会出问题的,这个时候就需要用 -0 选项。用这个选项的时候,必须确保输入串是以空字串(null)结尾的。比如用 find 函数的时候 -print0选项就是这么干的。
如果调用的函数以状态号255退出了,xargs 会立即退出,并且在标准错误里输出。
选项:
–arg-file=file
-a file
从文件里读取而不是标准输入。
–null, -0
用null作为分隔符而不是空格。
–delimiter=delim
-d delim
以delim字符分隔输入,引号和反斜杠是不允许的。
-E eof-str
设置结束符,否则就没有结束符。
–eof[=eof-str]
-e [eof-str]
和-E选项类似。
–help
输出帮助信息
-I replace-str
不懂
–replace [=replace-str]
-i [replace-str]
还是不懂
-L max-lines
在一行里面最多使用max-lines 非空输入行。默认是1。
-n max-args
在一行里面最多使用max-args个参数。
–interactive
-p
每次输入的时候提示用户。
–no-run-if-empty
-r
如果输入里面不包含任何非空字符,那么不执行命令。
–max-chars=max-chars
-s max-chars
一行里面使用最多max-chars 个字符,包括命令,参数和结束符。
–varbose
-t
在执行变量之前将其输出到标准错误输出。
–version
输出版本号
–show-limits
输出限制。
–exit
-x
当长度超出限制的时候退出。
举例:
在/tmp目录下找文件名是core的文件并删除。当目录名含有空格或者换行符的时候会出错。
这个可以修补目录名含有空格或者换行符的时候的错误。
退出状态:
0 | 正常结束 |
123 | 调用的函数以1-125的结束号结束 |
124 | 调用的函数以255结束 |
125 | 命令被信号杀掉 |
126 | 命令不可执行 |
127 | 找不到命令 |
1 | 出现错误 |
转载请注明来源:http://www.tianwaihome.com/2012/05/xargs.html。