Linux 中的 Xargs 命令

2023-11-05

The xargs实用程序允许您从标准输入构建和执行命令。它通常通过管道与其他命令结合使用。

With xargs,您可以提供标准输入作为命令行实用程序的参数,例如mkdir and rm .

在本教程中,我们将介绍使用xargs命令。

如何使用Linuxxargs命令#

xargs从标准输入读取参数,以空格或换行符分隔,并使用输入作为命令的参数来执行指定的命令。如果没有提供命令,则默认为/bin/回声 .

语法为xargs命令如下:

xargs [OPTIONS] [COMMAND [initial-arguments]]

最基本的使用示例xargs是使用管道传递几个用空格分隔的字符串xargs并运行一个将使用这些字符串作为参数的命令。

echo "file1 file2 file3" | xargs touch

在上面的示例中,我们将标准输入通过管道传输到xargs,以及touch针对每个参数运行命令,创建三个文件。这与运行以下命令相同:

touch file1 file2 file3

如何查看命令并提示用户#

要在执行命令之前在终端上打印命令,请使用-t (--verbose) 选项:

echo  "file1 file2 file3" | xargs -t touch
touch file1 file2 file3

如果您想在执行每个命令之前获得是否运行每个命令的提示,请使用-p (--interactive) 选项:

echo  "file1 file2 file3" | xargs -p touch

Type y or Y确认并运行命令:

touch file1 file2 file3 ?...y

该选项在执行破坏性命令时非常有用。

如何限制参数数量#

默认情况下,传递给命令的参数数量由系统限制决定。

The -n (--max-args) 选项指定要传递给给定命令的参数数量。xargs根据需要多次运行指定的命令,直到用尽所有参数。

在以下示例中,从标准输入读取的参数数量限制为 1。

echo  "file1 file2 file3" |  xargs -n 1 -t touch

从下面的详细输出中可以看到,touch 命令是针对每个参数单独执行的:

touch file1
touch file2
touch file3

如何运行多个命令#

运行多个命令xargs, 使用-I选项。它的工作原理是定义一个replace-str之后-I选项和所有出现的replace-str替换为传递给 xargs 的参数。

下列xargs示例将运行两个命令,首先它将使用以下命令创建文件touch,然后它会列出带有ls命令:

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file1
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file2
-rw-r--r-- 1 linuxize users 0 May  6 11:54 file3

一个常见的选择replace-str is %。但是,您可以使用其他占位符,例如,ARGS:

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

如何指定分隔符#

Use the -d (--delimiter) 选项设置自定义分隔符,可以是单个字符,也可以是以以下字符开头的转义序列\.

下面我们使用的例子;作为分隔符:

echo  "file1;file2;file3" | xargs -d \; -t touch
touch file1 file2 file3

如何从文件中读取项目#

xargs 命令还可以从文件而不是标准输入中读取项目。为此,请使用-a (--arg-file) 选项后跟文件名。

在下面的示例中,xargs命令将读取ips.txt文件并 ping 每个 IP 地址。

ips.txt
8.8.8.8
1.1.1.1

我们还使用-L 1选项,指示xargs一次读一行。如果省略该选项xargs会将所有 IP 传递给一个ping命令。

xargs -t -L 1 -a ips.txt ping -c 1
ping -c 1 8.8.8.8 
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms

...
ping -c 1 1.1.1.1 
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

Using xargs with find #

xargs最常与以下组合使用find命令。您可以使用find搜索特定文件,然后使用xargs对这些文件执行操作。

为了避免包含换行符或其他特殊字符的文件名出现问题,请始终使用 find-print0选项,这会导致find打印完整的文件名,后跟一个空字符。此输出可以通过以下方式正确解释xargs使用-0, (--null) 选项。

在下面的示例中,find将打印里面所有文件的全名/var/www/.cache目录和xargs将文件路径传递给rm命令:

find /var/www/.cache -type f -print0 | xargs -0 rm -f

使用 xargs 修剪空白字符#

xargs也可以用作删除给定字符串两侧空格的工具。只需将字符串通过管道传输到xargs命令,它将进行修剪:

echo "  Long line " | xargs
Long line

这在以下情况下很有用:比较字符串在 shell 脚本中。

#!/bin/bash

VAR1=" Linuxize "
VAR2="Linuxize"

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

## Using xargs to trim VAR1
if [[ $(echo "$VAR1" | xargs) == "$VAR2" ]]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi
Strings are not equal.
Strings are equal.

结论#

xargs是 Linux 上的命令行实用程序,使您能够构建和执行命令。

有关每个的更多详细信息xargs选项,阅读xargs人 page.

如果您有任何问题或反馈,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 中的 Xargs 命令 的相关文章

随机推荐

  • 如何使用 Imapsync 在 IMAP 服务器之间传输邮箱

    什么是 Imapsync Imapsync 是一种 IMAP 传输工具 用于将邮箱和电子邮件从一个 IMAP 服务器传输到另一个 IMAP 服务器 Imapsync 应用程序是一种命令行工具 允许增量和递归 IMAP 从一个邮箱传输到另一个
  • 如何在 Ubuntu 18.04、16.04 上安装和配置 OpenVPN 服务器

    VPN 或虚拟专用网络是一组通过公共网络 Internet 连接到专用网络的计算机 如今 安全性是每个人最关心的问题 在公共网络上工作时更需要安全性 就像您在远程位置有一组计算机一样 现在您需要将这些计算机作为系统中的 LAN 网络进行访问
  • 如何在 Ubuntu 22.04 上安装和使用 Monit

    Monit 是一个多功能且功能强大的开源实用程序 用于管理和监控基于 Unix 的系统 它可用于监视系统资源 服务和应用程序 使您能够确保它们以最佳状态运行并保持可用 Monit 还可以配置为自动重新启动服务并在满足某些条件时发送通知 在本
  • 使用 Python FastAPI 和 MySQL

    FastAPI 是一个现代 快速 高性能 的 Web 框架 用于使用 Python 构建 API 它基于标准 Python 类型提示构建 使其易于使用 同时为开发人员提供了许多高级功能 构建 FastAPI 应用程序时 为了安全性和模块化
  • 如何在 CentOS 8 上配置静态 IP 地址

    问题 如何在 CentOS 8 上更改或配置 IP 地址 在 CentOS 桌面系统上设置静态 IP 地址的步骤 截至今天 CentOS 8 Linux 操作系统是 CentOS 的最新可用版本 桌面提供了一个有吸引力的 GUI 来使用它
  • Java 开发人员的重要代码格式化技巧

    Java 代码格式化是编写干净 可读和可维护代码的一个重要方面 在整个团队或组织中采用一套一致的格式化规则将显着提高代码库的整体质量 使开发人员更容易理解 修改和调试代码 本文将概述 Java 代码格式化最佳实践 讨论开发人员可以用来增强代
  • 如何在 Fedora 35/34/33 上安装 Erlang

    Erlang是一种编程语言 用于构建具有高可用性要求的大规模可扩展的软实时系统 Erlang运行时系统内置了对并发 分布式和容错的支持 本教程将帮助您在 Fedora Linux 系统上安装 erlang 步骤 1 在 Fedora 上安装
  • 如何在 Ubuntu 和 Debian 上设置 Squid 代理服务器

    如果您正在寻找一种增强 Debian 服务器安全性和性能的方法 那么设置 Squid 代理服务器可能是一个不错的选择 Squid 是一种广泛使用的开源代理服务器 提供缓存 过滤和身份验证等各种功能 在本文中 我们将讨论在 Ubuntu 和基
  • 如何在 CentOS 8 上安装和配置 VNC

    虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计算机 本文介绍了在 CentOS 8 上安装和配置 VNC 服务器的步骤 我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器 先决条件 要遵循
  • Linux 中的日期命令

    在本教程中 我们将介绍以下基础知识date命令 The date命令显示或设置系统日期 它最常用于以不同格式打印日期和时间以及计算未来和过去的日期 使用Linuxdate命令 语法为date命令如下 date OPTION FORMAT 要
  • 如何在 CentOS 8 上安装 OpenCV

    OpenCV 开源计算机视觉库 是一个开源计算机视觉库 绑定了 C Python 和 Java 并支持所有主要操作系统 它可以利用多核处理并具有 GPU 加速功能来实现实时操作 OpenCV 的应用非常广泛 包括医学图像分析 拼接街景图像
  • 如何在 Linux 中设置和列出环境变量

    在基于 Linux 和 Unix 的系统中 环境变量是一组动态命名值 存储在系统中 供在 shell 或子 shell 中启动的应用程序使用 简而言之 环境变量是具有名称和关联值的变量 环境变量允许您自定义系统的工作方式以及系统上应用程序的
  • 如何在 Debian 10 上安装 Gradle

    Gradle 是一个强大而灵活的构建工具 主要用于 Java 项目 结合了 Ant 和Maven 与使用 XML 进行脚本编写的前辈不同 Gradle 使用Groovy 一种动态的 面向对象的编程语言 用于 Java 平台定义项目和构建脚本
  • 如何在 Linux、Windows 和 macOS 上编辑 Hosts 文件

    Hosts 文件用于将域名 主机名 映射到 IP 地址 它是所有操作系统 包括 Linux Windows 和 macOS 都使用的纯文本文件 主机文件的优先级高于 DNS 当您输入要访问的网站的域名时 必须将域名转换为其相应的IP地址 操
  • Bash 连接字符串

    最常用的字符串操作之一是连接 字符串连接只是一个奇特的编程术语 用于通过将一个字符串附加到另一个字符串的末尾来将字符串连接在一起 在本教程中 我们将解释如何在 Bash 中连接字符串 连接字符串 连接两个或多个字符串变量的最简单方法是将它们
  • 如何在 Debian 9 上安装和使用 Docker Compose

    Docker 组合是一个允许您定义和编排多容器 Docker 应用程序的工具 它使用 YAML 文件来配置应用程序的容器 网络和卷 Compose 可用于多种目的 单主机应用程序部署 自动化测试和本地开发是 Docker Compose 最
  • 如何在 Debian 10 Linux 上安装 Apache Web 服务器

    Apache HTTP 服务器是世界上最流行的 Web 服务器之一 它是一个开源 跨平台的 HTTP 服务器 为大部分互联网网站提供支持 Apache 提供了许多强大的功能 可以通过附加模块进行扩展 在本教程中 我们将解释如何在 Debia
  • 如何在 Debian 9 上安装 PHP

    Debian 9 附带的 PHP 7 0 版本很快就会停止支持 并且不再接收安全更新 在本教程中 我们将引导您完成在 Debian 9 服务器上安装 PHP 7 2 的步骤 我们还将向您展示如何配置 Apache 和 Nginx 来运行 P
  • 如何在 Debian 9 上使用 VSFTPD 设置 FTP 服务器

    FTP 文件传输协议 是一种标准网络协议 用于在远程网络之间传输文件 为了更安全 更快速的数据传输 请使用SCP or SFTP 有许多可用于 Linux 的开源 FTP 服务器 最流行和最广泛使用的是PureFTPd ProFTPD an
  • Linux 中的 Xargs 命令

    The xargs实用程序允许您从标准输入构建和执行命令 它通常通过管道与其他命令结合使用 With xargs 您可以提供标准输入作为命令行实用程序的参数 例如mkdir and rm 在本教程中 我们将介绍使用xargs命令 如何使用L