ターミナルの起動時にreadlineに事前に「入力された」テキストを追加さ​​せるにはどうすればよいですか?

ターミナルの起動時にreadlineに事前に「入力された」テキストを追加さ​​せるにはどうすればよいですか?

事前に「入力」されたことは、対話型コンソールにユーザーが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

おすすめ記事