• Linux下多个命令串联执行(管道/xargs/exec)


    Linux的强大,就是可以把很多完成单一功能的命令行程序通过串联的方式组合在一起,就可以完成非常复杂的功能,并且只需要漂亮的一行代码搞定。是不是很神奇。

    多个命令串联执行, 大家都熟知的应该就是管道 | 了,但是管道给第二个命令传递是直接传到命令的输入上,这种方式要求命令本身的支持,支持的命令较少。

    就是命令需要支持从 stdin 的标准输入读取输入信息的命令才能使用 管道进行串联。 但是大部分的程序是通过入参来读取输入信息的。这个时候就需要其他的支持了。

    下面我们重点讲 “xargs”和“exec”

    xargs,是把第一个命令的输出作为参数传递到第二个命令上,这种方式只要第二个命令可以接受参数即可,支持的命令较多。

    1. find ./kernel/msm-4.19/drivers/usb -name "Kconfig" | cat
    2. find ./kernel/msm-4.19/drivers/usb -name "Kconfig" | xargs cat
    3. find ./kernel/msm-4.19/drivers/usb -name "Kconfig" -exec cat {} \;

    上面指令中的第一行代码仅仅是输出找到文件列表

    上面指令中的第二行代码就是输出找到的每一个文件的文件内容

    上面指令中的第三行代码和第二行代码输出的内容一致。

    xargs还有-d分隔符选项, -p等待选择执行的选项, -n代表每次传递几个参数的选项

    find  ./kernel/msm-4.19/drivers/ -name "Kconfig" -exec echo {} \; -exec grep -w  "USB_PD" {} \;

    用 -exec组合多个命令执行,需要使用    \;   作为命令分隔符

    用 |xargs组合多个命令执行,需要使用  | 作为命令分隔符

    1. root@ubuntu:/home/Open-Q_865_Android-Q_v1.1# find ./kernel/msm-4.19/drivers/ -name "Kconfig" |xargs grep -w "USB_PD"
    2. ./kernel/msm-4.19/drivers/usb/pd/Kconfig:config USB_PD
    3. ./kernel/msm-4.19/drivers/usb/pd/Kconfig: select USB_PD
    find ./kernel/msm-4.19/drivers/ -name "Kconfig" |xargs grep -w "USB_PD"|xargs grep "select"

    经过我的测试, |xargs  和  -exec  除了使用的语法不一样,功能一样。

    1. root@ubuntu:/home/Android-Q_v1.1# find ./ -name rdbg.ko|grep kona | xargs md5sum
    2. 573c3a555c3e6ec3176beef369fd366a ./out/target/product/kona/vendor/lib/modules/rdbg.ko
    3. 573c3a555c3e6ec3176beef369fd366a ./out/target/product/kona/dlkm/lib/modules/rdbg.ko
    4. 76b2360a6e2d2caacd2a5b25225af4a8 ./out/target/product/kona/obj/kernel/msm-4.19/drivers/char/rdbg.ko
    5. 573c3a555c3e6ec3176beef369fd366a ./out/target/product/kona/obj/kernel/msm-4.19/staging/lib/modules/4.19.81+/kernel/drivers/char/rdbg.ko
    6. 573c3a555c3e6ec3176beef369fd366a ./out/target/product/kona/obj/PACKAGING/target_files_intermediates/kona-target_files-eng.root/VENDOR/lib/modules/rdbg.ko
    7. 573c3a555c3e6ec3176beef369fd366a ./out/target/product/kona/obj/PACKAGING/depmod_vendor_intermediates/lib/modules/0.0/vendor/lib/modules/rdbg.ko
    8. 573c3a555c3e6ec3176beef369fd366a ./kernel/ship_prebuilt/primary_kernel/out/target/product/kona/dlkm/lib/modules/rdbg.ko

  • 相关阅读:
    信息收集工具集合
    bpa软件视频教程,BPA是什么软件
    解码 xsync 的 map 实现
    计算机网络相关知识点总结(一)
    Kafka系列之:Broker配置
    【NPS】微软NPS配置802.1x,验证域账号,动态分配VLAN(有线网络篇)
    鉴源论坛丨信号基础设备概述
    搭载AI之后的表格插件又有哪些新的改变
    【新日语2】单元复习(一)
    unity 使用Image的RectTransform来进行判断是否点击到
  • 原文地址:https://blog.csdn.net/langeldep/article/details/127746040