Может кто-нибудь объяснить, что такое crud и как именно grep работает в этом случае?
file $(grep –irl crud /usr/src/linux-2.4)
Давайте сломаем это. Во-первых, формат $(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
Давайте сломаем это. Во-первых, формат $(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
Давайте сломаем это. Во-первых, формат $(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
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
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
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