我想通过标准输入stdin向bash发送箭头键:
cat | /bin/bash
然后我输入"echo hi" => "hi"出现在控制台上(当然不带引号) 接着我按了向上的箭头键 => 出现“^[[A命令未找到”的提示
是否可以通过标准输入向程序发送箭头键?
我询问的原因是:我想从另一个程序来控制bash。 我想向bash发送箭头键。
我想通过标准输入stdin向bash发送箭头键:
cat | /bin/bash
然后我输入"echo hi" => "hi"出现在控制台上(当然不带引号) 接着我按了向上的箭头键 => 出现“^[[A命令未找到”的提示
是否可以通过标准输入向程序发送箭头键?
我询问的原因是:我想从另一个程序来控制bash。 我想向bash发送箭头键。
尝试使用-i
开关启动bash。
cat
命令。请使用Bash内置的read
命令,并加上-e
选项以启用readline支持。# version 1
while IFS="" read -r -e -d $'\n' line; do printf '%s\n' "$line"; done | /bin/bash
# version 2
#set -o pipefail
# kill 0: kill process group
(
while IFS="" read -r -e -d $'\n' line; do
#trap 'trap - EXIT HUP INT QUIT PIPE TERM ERR; kill $PPID' EXIT HUP INT QUIT PIPE TERM ERR
trap 'trap - EXIT HUP INT QUIT PIPE TERM ERR; kill 0' EXIT HUP INT QUIT PIPE TERM ERR
printf '%s\n' "$line" >> ~/.bash_history
history -n
printf '%s\n' "$line"
done
) | (trap 'trap - EXIT HUP INT QUIT PIPE TERM ERR; kill 0' EXIT HUP INT QUIT PIPE TERM ERR; /bin/bash)
#) | (trap 'trap - EXIT HUP INT QUIT PIPE TERM ERR; kill $PPID' EXIT HUP INT QUIT PIPE TERM ERR; /bin/bash)