как понять скрипт оболочки? - PullRequest
0 голосов
/ 25 июня 2018

Может кто-нибудь объяснить мне, что делает следующее?

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

1 Ответ

0 голосов
/ 25 июня 2018

Этот бит:

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

находит все обычные файлы, заканчивающиеся .txt в каталоге, который хранится в переменной среды FIRMWARE_BASE_DIR.

Обратите внимание, что скобки экранированы, поэтому они передаются для поиска вместо интерпретации оболочкой, но внутри них есть только один предикат поиска, поэтому они не имеют функции - если эта команда генерируется машиной, возможно, она может содержать больше, чем один термин иногда? Если нет, то они могут быть удалены.

Документацию можно найти по адресу 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

...