Я кормлю mplayer списком файлов из другой команды:

beet ls somequery -p | xargs -d '\n' mplayer

Когда вызывается таким образом, mplayer не реагирует ни на какие стандартные клавиши, все, что я могу сделать, это Cc прервать его.

  1. Почему это происходит?
  2. Как заставить mplayer вести себя (без написания большего кода, без циклов, регулярных выражений или нескольких каналов)?

1 ответ1

0

Основываясь на этом ответе, который передает аргументы от find , я придумал следующий скрипт:

$ beet ls QUERY | mplayer -playlist /dev/fd/3 3<&0 </dev/tty

Краткое объяснение того, как я это понимаю: mplayer велят читать /dev/fd/3 как файл списка воспроизведения. Файловый дескриптор 3 (/dev/fd/3) заполняется стандартным вводом (3<&0) из команды beet . И вход в mplayer указывается как управляющий терминал (</dev/tty). Поскольку mplayer читает из файла, а не из стандартного ввода, вы можете управлять им с помощью клавиатуры.

Это работает для меня под Mac OS 10.8.3.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .