2015-10-09 2 views
1

Я изучаю командную строку из книги Командная строка Linux, и у меня есть сомнения. Не должно ls -l $(which cp) и which cp | ls -l имеют одинаковый выход? Потому что я беру выходные данные из cp и передавая его ls -l Но это не работает должным образом. which cp | ls -l вместо этого отображает содержимое pwd

ответ

2

ls все равно, что входит в стандартный ввод.

echo anything | ls -l 
         ^^^ 

Поскольку вы не предоставили каталог в список, он будет список pwd.

1

В первом случае ls принимает результат в качестве аргумента, во втором он принимает его во входном потоке (stdin), который в этом случае игнорируется.

Вы можете конвертировать из входного потока аргументов с помощью xargs:

which cp | xargs ls -l