📜  Linux 中的 xargs 命令及示例

📅  最后修改于: 2022-05-13 01:57:30.385000             🧑  作者: Mango

Linux 中的 xargs 命令及示例

xargs是一个 Unix 命令,可用于从标准输入构建和执行命令。

重要性:
一些命令如 grep 可以接受输入作为参数,但有些命令接受参数,这是 xargs 出现的地方。

句法 :

xargs [options] [command]

xargs 选项:
-0 :输入项以空字符而不是空格终止
-a file :从文件中读取项目而不是标准输入
–delimiter = delim :输入项以特殊字符结束
-E eof-str :将文件字符串的结尾设置为 eof-str
-I replace-str :用从标准输入读取的名称替换初始参数中出现的 replace-str
-L max-lines :每个命令行最多使用 max-lines 非空白输入行。
-p :提示用户是否运行每个命令行并从终端读取一行。
-r :如果标准输入不包含任何非空格,则不运行该命令
-x :如果超出大小则退出。
–help :将选项摘要打印到 xargs 并退出
–version :打印版本号。 xargs 和退出

例子 :

xargs 示例



例子 :
下面是 C 程序,它读取一个文本文件“test.txt”,然后将该程序的输出作为 touch 命令的输入。

文本文件“test.txt”的内容

file1
file2
file3
file4
// C program to read contents of file
#include 
  
// Driver Code
int main(){
    int c;
    FILE *file;
  
    // open file test.txt
    file = fopen("test.txt", "r");
    if (file) {
  
        // read file line-by-line until
        // end of file
        while ((c = getc(file)) != EOF)
            putchar(c);
  
        fclose(file);
    }
    return 0;
}

输出 :

file1
file2
file3
file4

现在,使用./a.out 的输出作为触摸命令的输入

带触摸的 xargs 示例

带选项的命令用法:

xargs --version

打印 xargs 命令的版本号,然后退出。

输出 :

xargs (GNU findutils) 4.7.0-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
xargs -a test.txt

它将显示文件的内容

file1
file2
file3
file4
xargs -p  -a test.txt

-p 选项在运行每个命令行之前提示确认。如果响应以 'y' 或 'Y' 开头,它只运行命令行

输出 :

# xargs -p  -a test.txt
echo file1 file2 file3 file4 ?...y
file1 file2 file3 file4

# xargs -p  -a test.txt                                                                                                                 
echo file1 file2 file3 file4 ?...n
xargs -r -a test.txt

现在,假设文件“test.txt”为空,并且上面的命令被执行, -r 选项确保如果标准输入为空,则不执行命令,因此上面的命令不会产生任何输出,
但是,如果在没有 -r 选项的情况下执行上述命令,它将产生一个空行作为输出。
请参阅下图作为实例:

带有 -r 选项的 xargs

– 曼迪普·辛格

参考 :
1) xargs 维基百科
2)需要xargs
3) xargs 手册页