首页 > 解决方案 > 如何理解一个shell脚本?

问题描述

有人可以解释一下以下内容吗?

find $FIRMWARE_BASE_DIR \( -name "*.txt" \) -type f | 
  xargs -t -n1 sed -i '' -e '/^#/d;/^nocrc=/d;/macaddr=/d;/^$/d;s/[ \t]*$//'

标签: bashsedfindxargs

解决方案


这一点:

find $FIRMWARE_BASE_DIR \( -name "*.txt" \) -type f

.txt在 FIRMWARE_BASE_DIR 环境变量中存储的目录下查找所有以结尾的常规文件。

请注意,括号被转义,以便将它们传递给 find 而不是由 shell 解释,但它们内部只有一个 find 谓词,因此它们没有功能 - 如果此命令是机器生成的,它有时可能包含多个术语? 如果没有,那么它们可以被删除。

您可以在http://man7.org/linux/man-pages/man1/find.1.html找到文档

这一点:

xargs -t -n1 command

获取该文件列表并运行每个文件名上指定的任何命令(事先将命令打印到屏幕上)

您可以在http://man7.org/linux/man-pages/man1/xargs.1.html找到文档

这一点:

sed -i '' -e '/^#/d;/^nocrc=/d;/macaddr=/d;/^$/d;s/[ \t]*$//'

在没有备份的情况下编辑输入文件:

  • #删除任何以或开头的行nocrc=
  • 删除任何包含macaddr=
  • 删除空行
  • 并删除尾随空格

您可以在http://man7.org/linux/man-pages/man1/sed.1.html找到文档


推荐阅读