Использует ли команда `screen`` stuff` `stdin`? - PullRequest
0 голосов
/ 13 декабря 2018

mpv - это медиаплеер, который можно использовать в интерактивном режиме из командной строки.Это запускает его в терминале:

mpv path/to/playlist_file.m3u --no-audio-display

Я могу затем нажать >, чтобы перейти к следующему треку и использовать другие интерактивные команды .

Я могу контролироватьон использует screen следующим образом:

# start a screen session called "my_player"
screen -d -m -S my_player mpv path/to/playlist_file.m3u --no-audio-display
# next track
screen -S my_player -p 0 -X stuff ">"
# prev track
screen -S my_player -p 0 -X stuff "<"
# "end of text character" = control + c = terminate
screen -S my_player -p 0 -X stuff $'\003'

Но что здесь делает команда stuff экрана?Я бы предположил, что «отправка ввода в стандартный вход», но echo ">" | mpv path/to/playlist_file.m3u не вызывает его запуска и сразу пропускает трек.

man screen говорит:

Материалстрока строки во входном буфере текущего окна.Это похоже на команду «вставить», но с гораздо меньшими накладными расходами.Вы не можете вставлять большие буферы с помощью команды "stuff".Это наиболее полезно для привязки клавиш.См. Также «bindkey».

Под «входным буфером» подразумевается стандартный ввод или что-то еще?

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

...