shell - `screen` 的 `stuff` 命令是否使用 `stdin`?
问题描述
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'
但是 screen 的stuff
命令在这里做什么呢?我会猜到“将输入发送到标准输入”,但echo ">" | mpv path/to/playlist_file.m3u
不会导致它启动并立即跳过曲目。
man screen
说:
将字符串 string 填充到当前窗口的输入缓冲区中。这类似于“粘贴”命令,但开销要少得多。您不能使用“stuff”命令粘贴大缓冲区。它对键绑定最有用。另见“绑定键”。
“输入缓冲区”是指标准输入还是其他?
(我问是因为我想通过 Elixir 控制这个程序Port
,它使用标准输入和输出,但到目前为止我的输入似乎被忽略了。)
解决方案
推荐阅读
- powershell - 为什么我在文本文件中没有输出文件或没有内容?
- jestjs - 在 nx 测试 (nx CLI) 中使用开玩笑的“观看模式”
- bash - 在 bash 中有效地查看 N 个最近编辑的文件
- sass - 应用 CSS hack 的 Sass mixin
- python - 我如何隐藏内部错误堆栈 [python]
- c - 为什么这个函数没有返回数组之间正确数量的公共元素?
- ibm-cloud - 是否可以使用 ibmcloud cli 以某种方式更新/更改默认资源组?
- android - Android领域gradle插件问题
- workbox - 如何缓存 webpack 的资产并排除 index.html?
- java - 获取数组的最后一个元素