Как передать вывод команды Linux в команду файла Linux? - PullRequest
2 голосов
/ 16 февраля 2011
$ which file
/usr/bin/file
$ file /usr/bin/file
/usr/bin/file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

Почему это не работает?

$ which file | file

Usage: file [-bcikLhnNrsvz0] [-e test] [-f namefile] [-F separator] [-m magicfiles] file...
   file -C -m magicfiles

Попробуйте file --help для получения дополнительной информации.

Ответы [ 3 ]

6 голосов
/ 16 февраля 2011

Возможно, вы ищете расширение для xargs или shell. Попробуйте:

$ which file | xargs file

или

$ file `which file`
5 голосов
/ 16 февраля 2011

file ожидает свои аргументы в командной строке, а не на стандартном вводе, если вы не укажете иначе:

$ which file | file -f -

В качестве альтернативы:

$ file `which file`

Или, для полноты:

$ which file | xargs file
4 голосов
/ 16 февраля 2011

Вместо этого попробуйте обратные кавычки, например

$ file `which python`
/usr/bin/python: symbolic link to `python2.6'

Ваш пример не работает, потому что ваш канал отправляет вывод команды which на стандартный вывод команды file. Но файл не работает на stdin - он работает с аргументом командной строки.

...