ls
получает аргументы не из своего стандартного ввода (именно так канал передает данные в процесс), а из своей командной строки.
ls $(whereis boost)
возьмет вывод whereis boost
и использует его в качестве аргументов для ls
, давая результат, который вам нужен. Это известно как подстановка команд.