I have this setup where I have computer with ssh and a display where I have a user logged in to terminal. What I want to do is send commands like I was using that local session with keyboard. I tried to echo to /dev/tty1 but it just shows what I typed instead executing it. Which makes sense. The system only has bash so no GUI or anything like that.

  • 1
    Do you really need to send commands to that session, or would executing them in an independent session (i.e. ssh remotehost "some command; another command; yet another command") be sufficient? Aug 30, 2016 at 23:39

1 Answer 1


The TIOCSTI ioctl can inject characters into a terminal, or see instead uinput on Linux to generate keyboard (or mouse!) input.

  • ttywrite.c - sample C implementation
  • Term::TtyWrite - Perl implementation

    $ sudo perl -MTerm::TtyWrite \
      -e 'Term::TtyWrite->new("/dev/pts/2")->write("echo hi\n")'
  • This Q&A is Linux-specific, fortunately. Note that other operating systems started to drop TIOCSTI a year after this answer was written. unix.stackexchange.com/q/406690/5132
    – JdeBP
    Feb 24, 2020 at 9:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .