Supposons que vous ayez un émulateur de terminal (T1) ouvert avec un PID de 6350.
Depuis un autre terminal, tapez cette commande (C1) :
echo "lsn" > /proc/6350/fd/0
Cela écrit ls
et la nouvelle ligne dans T1 mais ne l'exécute pas. Pourquoi ?
J'ai aussi essayé d'utiliser cat|bash
avec echo "lsn" > /proc/catid/fd/0
mais il n'est toujours pas exécuté.
Comment puis-je faire écho à la commande dans un autre terminal et exécuter la commande ?
réponse possible :
$ mkfifo toto;
$ bash < toto;
$ echo "ls" > toto;
Dans ce cas vous ne pouvez plus écrire directement dans le terminal (tout s'affiche de la même manière que la commande (C1) affichait la chose dans ce terminal.
Réponse acceptée :
Il existe un utilitaire de ligne de commande appelé ttyecho
qui peut envoyer une commande à un autre terminal (tty/pts) et exécuter la commande.
sudo ttyecho -n /dev/pts/5 ls
Voir :Utilitaire pour envoyer des commandes ou des données à d'autres terminaux (tty/pts)
Voir aussi :ttyecho
code source sur github.
Une autre commande tty intéressante est selector
, un comparateur de modèles interactif en temps réel dans la console qui met à jour le tampon d'entrée tty.
# selector examples
selector -v -x @ <(find . -maxdepth 2 -type d | awk '{print $0"@cd "$0}')
selector -v -x @ <(grep -E -o 'http[^ ]+' fileWithURLS)
Voir :sélecteur – RECHERCHE DYNAMIQUE EN CONSOLE