我无法让bash放弃对stdin的管道控制。我想将用户名和密码传递给程序,然后从stdin而不是管道读取相同的程序!这就是我的尝试:
alias pandora='echo -e "$(cat ~/.musik/name)\n$(cat ~/.musik/pass | base64 --decode)" | pianobar'
那是我的.bashrc
。首先,它是用户名/密码文件,然后将其输入pianobar
(终端中的pandora)。用户名和密码进入那里,然而,pianobar期待更多的输入。 Pianobar要求一个数字(例如,可以播放 12 ),但是当我输入并按下回车时,没有任何反应,因为出于某种原因,它没有预料到它会来从那里。
如何让管道“放弃”控制?
注意:我也试过
echo "$(cat ~/.musik/name)
$(cat ~/.musik/pass | base64 --decode)
" >>> pianobar
答案 0 :(得分:1)
您可以尝试两种选择:
简单方法:(可能不适用于所有类型的命令(例如本例中的pianobar)
alias pandora='{ echo -e "$(cat ~/.musik/name)\n$(cat ~/.musik/pass | base64 --decode)"; cat; } | pianobar'
或者有点清理&删除UUOC
:
alias pandora='{ cat ~/.musik/name; base64 --decode < ~/.musik/pass; cat; } | pianobar'
更好的方法:使用expect
脚本。我本可以编写脚本,但我不知道应用程序提供的登录提示。
答案 1 :(得分:0)
这是配置pianobar自动登录的正确方法:
mkdir ~/.config/pianobar/ && cd ~/.config/pianobar/ && touch config
在命令行中运行^^^,然后将以下内容放入新的配置文件
# User
user = (Your Pandora email)
password = (Your Pandora password)