Cum se preflinează intrarea liniei de comandă

Rulez un script de bash și aș vrea să prefilling o linie de comandă cu o comandă după executarea scriptului. Singura condiție este că scriptul nu trebuie să fie difuzat la momentul respectiv.

Am nevoie de ...

  1. executați scriptul
  2. aveți text prealabil în linia de comandă după ce scenariul a fost oprit

Este chiar posibil? Tot ce am încercat este să simulez un script de bash folosind

read -e -i "$comm" -p "[[email protected]$HOSTNAME $PWD]$ " input
command $input

Dar caut ceva mai simplu.

0

1 răspunsuri

Trebuie să utilizați ioctl-ul TIOCSTI. Iată un exemplu de program C care arată cum funcționează:

#include 

main()
{
    char buf[] = "date";
    int i;
    for (i = 0; i < sizeof buf - 1; i++)
      ioctl(0, TIOCSTI, &buf[i]);
    return 0;
}

Compilați acest lucru și executați-l și "data" va fi tamponat ca intrare pe stdin, pe care shell-ul dvs. va citi după ieșirea programului. Puteți roti acest lucru într-o comandă care vă permite să introduceți ceva în fluxul de intrare și să folosiți comanda respectivă în scriptul bash.

0
adăugat