通过预“输入”,我的意思是交互式控制台有代码文本等待用户只需按 Enter 键即可(编辑和)运行。
看起来 readline 应该支持某些东西,但确认它不支持就足够了。至少我会知道安装额外的自动化工具(如预期)是唯一的方法。
答案1
不确定这是否有帮助,并且不是每个 readline,但如果 python 是替代方案(或类似的),则一种方法可能是:
#!/usr/bin/env python
""" Inject command to own command line """
import sys, fcntl, termios
def main():
""" x """
tty = sys.stdin
old_attr = termios.tcgetattr(tty)
new_attr = termios.tcgetattr(tty)
# No echo please
new_attr[3] &= ~termios.ECHO
termios.tcsetattr(tty, termios.TCSANOW, new_attr)
cmd = ' '.join(sys.argv[1:])
for char in cmd:
fcntl.ioctl(tty, termios.TIOCSTI, char)
termios.tcsetattr(tty, termios.TCSANOW, old_attr)
if __name__ == '__main__':
main()
如:
script_name command to inject
答案2
在 ZShell 下,print -z
内置的 shell 可以完成此任务。
% echo 'print -z "ls -l"' >> ~/.zshrc
% exec zsh
% ls -l
否则,ZSH 不会使用readline
,因此任何readline
解决方案对于 ZSH 来说无疑“不起作用”™。