事前に「入力」されたことは、対話型コンソールにユーザーがEnterキーを押して実行(編集および)するのを待つコードテキストがあることを意味します。
readlineが何かをサポートする必要があるようですが、そうでないことを確認するだけで十分です。少なくとも予想通り、追加の自動化ツールをインストールすることが唯一の方法であることがわかります。
答え1
これが役に立つか、readlineではないかはわかりませんが、Pythonが代替(または類似)である場合、1つのアプローチは次のとおりです。
#!/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
組み込みシェルがこれを行うことができます。
% echo 'print -z "ls -l"' >> ~/.zshrc
% exec zsh
% ls -l
それ以外の場合はZSHが使用されないため、readline
すべてのreadline
ソリューションは間違いなくZSH™で「機能しません」。