Что делает & ldquo; файл $ (grep -irl crud /usr/src/linux-2.4)” имею в виду?

Может кто-нибудь объяснить, что такое crud и как именно grep работает в этом случае?

file $(grep –irl crud /usr/src/linux-2.4)
0
задан 17 April 2017 в 15:43

6 ответов

Давайте сломаем это. Во-первых, формат $(command) называется «подстановка команды». Это способ возврата вывода команды, по существу создающего переменную, значение которой является результатом этой команды. Например:

$ echo foo
foo
$ var=$(echo foo) ## set the output of 'echo foo' to the variable $var
$ echo "$var"
foo

Теперь в этом случае выполняется команда grep -irl crud /usr/src/linux-2.4. Чтобы понять, что это значит, запустите man grep и посмотрите, что делает каждый из этих трех (i, r и l):

   -i, --ignore-case
          Ignore case distinctions in  both  the  PATTERN  and  the  input
          files.

   -r, --recursive
          Read all files  under  each  directory,  recursively,  following
          symbolic  links only if they are on the command line.  Note that
          if  no  file  operand  is  given,  grep  searches  the   working
          directory.  This is equivalent to the -d recurse option.

   -l, --files-with-matches
          Suppress normal output; instead print the  name  of  each  input
          file  from  which  output would normally have been printed.  The
          scanning will stop on the first match.

Взятые все вместе, это означает, перезагрузите все файлы в /usr/src/linux-2.4 и выполните поиск по каждому из них без учета регистра для слова crud, затем распечатайте имена любых файлов, которые соответствуют «.

Итак, эта команда будет печатать список имен файлов, содержащих слово crud. Поскольку мы запускаем file $(grep . . . ), это означает, что команда file (которая печатает тип файла и некоторую информацию о рассматриваемом файле) будет запускаться в каждом из файлов, возвращаемых параметром grep.

Объединив все это, команда выведет основную информацию о файлах всех файлов в /usr/src/linux-2.4, содержащих строку crud. На моей машине 14.04, которая возвращает:

$ file $(grep -irl crud /usr/src/)
/usr/src/linux-headers-3.16.0-77/include/linux/pktcdvd.h:                   C source, ASCII text
/usr/src/linux-headers-3.16.0-77/arch/arm/mach-sa1100/include/mach/cerf.h:  ASCII text
/usr/src/linux-headers-3.13.0-108/include/linux/pktcdvd.h:                  C source, ASCII text
/usr/src/linux-headers-3.13.0-108/arch/arm/mach-sa1100/include/mach/cerf.h: ASCII text
/usr/src/linux-headers-3.13.0-46/include/linux/pktcdvd.h:                   C source, ASCII text
/usr/src/linux-headers-3.13.0-46/arch/arm/mach-sa1100/include/mach/cerf.h:  ASCII text
/usr/src/linux-headers-3.16.0-30/include/linux/pktcdvd.h:                   C source, ASCII text
/usr/src/linux-headers-3.16.0-30/arch/arm/mach-sa1100/include/mach/cerf.h:  ASCII text
2
ответ дан 22 May 2018 в 23:31

Давайте сломаем это. Во-первых, формат $(command) называется «подстановка команды». Это способ возврата вывода команды, по существу создающего переменную, значение которой является результатом этой команды. Например:

$ echo foo foo $ var=$(echo foo) ## set the output of 'echo foo' to the variable $var $ echo "$var" foo

Теперь в этом случае выполняется команда grep -irl crud /usr/src/linux-2.4. Чтобы понять, что это значит, запустите man grep и посмотрите, что делает каждый из этих трех (i, r и l):

-i, --ignore-case Ignore case distinctions in both the PATTERN and the input files. -r, --recursive Read all files under each directory, recursively, following symbolic links only if they are on the command line. Note that if no file operand is given, grep searches the working directory. This is equivalent to the -d recurse option. -l, --files-with-matches Suppress normal output; instead print the name of each input file from which output would normally have been printed. The scanning will stop on the first match.

Взятые все вместе, это означает, перезагрузите все файлы в /usr/src/linux-2.4 и выполните поиск по каждому из них без учета регистра для слова crud, затем распечатайте имена любых файлов, которые соответствуют «.

Итак, эта команда будет печатать список имен файлов, содержащих слово crud. Поскольку мы запускаем file $(grep . . . ), это означает, что команда file (которая печатает тип файла и некоторую информацию о рассматриваемом файле) будет запускаться в каждом из файлов, возвращаемых параметром grep.

Объединив все это, команда выведет основную информацию о файлах всех файлов в /usr/src/linux-2.4, содержащих строку crud. На моей машине 14.04, которая возвращает:

$ file $(grep -irl crud /usr/src/) /usr/src/linux-headers-3.16.0-77/include/linux/pktcdvd.h: C source, ASCII text /usr/src/linux-headers-3.16.0-77/arch/arm/mach-sa1100/include/mach/cerf.h: ASCII text /usr/src/linux-headers-3.13.0-108/include/linux/pktcdvd.h: C source, ASCII text /usr/src/linux-headers-3.13.0-108/arch/arm/mach-sa1100/include/mach/cerf.h: ASCII text /usr/src/linux-headers-3.13.0-46/include/linux/pktcdvd.h: C source, ASCII text /usr/src/linux-headers-3.13.0-46/arch/arm/mach-sa1100/include/mach/cerf.h: ASCII text /usr/src/linux-headers-3.16.0-30/include/linux/pktcdvd.h: C source, ASCII text /usr/src/linux-headers-3.16.0-30/arch/arm/mach-sa1100/include/mach/cerf.h: ASCII text
2
ответ дан 18 July 2018 в 14:46

Давайте сломаем это. Во-первых, формат $(command) называется «подстановка команды». Это способ возврата вывода команды, по существу создающего переменную, значение которой является результатом этой команды. Например:

$ echo foo foo $ var=$(echo foo) ## set the output of 'echo foo' to the variable $var $ echo "$var" foo

Теперь в этом случае выполняется команда grep -irl crud /usr/src/linux-2.4. Чтобы понять, что это значит, запустите man grep и посмотрите, что делает каждый из этих трех (i, r и l):

-i, --ignore-case Ignore case distinctions in both the PATTERN and the input files. -r, --recursive Read all files under each directory, recursively, following symbolic links only if they are on the command line. Note that if no file operand is given, grep searches the working directory. This is equivalent to the -d recurse option. -l, --files-with-matches Suppress normal output; instead print the name of each input file from which output would normally have been printed. The scanning will stop on the first match.

Взятые все вместе, это означает, перезагрузите все файлы в /usr/src/linux-2.4 и выполните поиск по каждому из них без учета регистра для слова crud, затем распечатайте имена любых файлов, которые соответствуют «.

Итак, эта команда будет печатать список имен файлов, содержащих слово crud. Поскольку мы запускаем file $(grep . . . ), это означает, что команда file (которая печатает тип файла и некоторую информацию о рассматриваемом файле) будет запускаться в каждом из файлов, возвращаемых параметром grep.

Объединив все это, команда выведет основную информацию о файлах всех файлов в /usr/src/linux-2.4, содержащих строку crud. На моей машине 14.04, которая возвращает:

$ file $(grep -irl crud /usr/src/) /usr/src/linux-headers-3.16.0-77/include/linux/pktcdvd.h: C source, ASCII text /usr/src/linux-headers-3.16.0-77/arch/arm/mach-sa1100/include/mach/cerf.h: ASCII text /usr/src/linux-headers-3.13.0-108/include/linux/pktcdvd.h: C source, ASCII text /usr/src/linux-headers-3.13.0-108/arch/arm/mach-sa1100/include/mach/cerf.h: ASCII text /usr/src/linux-headers-3.13.0-46/include/linux/pktcdvd.h: C source, ASCII text /usr/src/linux-headers-3.13.0-46/arch/arm/mach-sa1100/include/mach/cerf.h: ASCII text /usr/src/linux-headers-3.16.0-30/include/linux/pktcdvd.h: C source, ASCII text /usr/src/linux-headers-3.16.0-30/arch/arm/mach-sa1100/include/mach/cerf.h: ASCII text
2
ответ дан 31 July 2018 в 23:31

file в соответствии с помощью, определяет тип обработанного файла. Команда $(grep -irl crud /usr/src/linux-2.4):

$(<command>) Захватывает значение внутренней команды. grep -irl crud /usr/src/linux-2.4, это внутренняя команда, которая ищет строку crud, с игнорированием case, рекурсивно и печатает только имена файлов, содержащих совпадения.

Итак, ваша полная команда ищет тип файлов, соответствующих строке crud, внутри каталога /usr/src/linux-2.4

0
ответ дан 22 May 2018 в 23:31

file в соответствии с помощью, определяет тип обработанного файла. Команда $(grep -irl crud /usr/src/linux-2.4):

$(<command>) Захватывает значение внутренней команды. grep -irl crud /usr/src/linux-2.4, это внутренняя команда, которая ищет строку crud, с игнорированием case, рекурсивно и печатает только имена файлов, содержащих совпадения.

Итак, ваша полная команда ищет тип файлов, соответствующих строке crud, внутри каталога /usr/src/linux-2.4

0
ответ дан 18 July 2018 в 14:46

file в соответствии с помощью, определяет тип обработанного файла. Команда $(grep -irl crud /usr/src/linux-2.4):

$(<command>) Захватывает значение внутренней команды. grep -irl crud /usr/src/linux-2.4, это внутренняя команда, которая ищет строку crud, с игнорированием case, рекурсивно и печатает только имена файлов, содержащих совпадения.

Итак, ваша полная команда ищет тип файлов, соответствующих строке crud, внутри каталога /usr/src/linux-2.4

0
ответ дан 31 July 2018 в 23:31

Другие вопросы по тегам:

Похожие вопросы: