사전에 "입력"되었다는 것은 대화형 콘솔에 사용자가 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
내장된 셸이 이 작업을 수행할 수 있습니다.
% echo 'print -z "ls -l"' >> ~/.zshrc
% exec zsh
% ls -l
그렇지 않으면 ZSH가 사용되지 않으므로 readline
모든 readline
솔루션은 확실히 ZSH™에서 "작동하지 않습니다".