我正在尝试通过标准输入向 bash 发送箭头键:
猫 | /bin/bash
然后我输入“echo hi”=>“hi”出现在控制台上(当然没有引号)然后我按向上箭头键 => ^[[A command not found 出现
是否可以通过 stdin 向程序发送箭头键?
我问的原因是:我想从另一个程序控制 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)