J'ai une exécutable qui commence une coque interactive utilisateur. Je voudrais, lors du lancement de la coquille, injecter quelques commandes d'abord, puis permettez à l'utilisateur d'avoir leur session interactive. Je peux le faire facilement en utilisant echo
:
echo "command 1\ncommand 2\ncommand3" | ./Shell_executable
Ceci presque fonctionne. Le problème est que la commande ECHO alimente le processus STDIN HITS EOF une fois que cela a fait écho à mes commandes. Ceci EOF amène que la coque se termine immédiatement (comme Si vous avez appuyé sur Ctrl + D dans la coquille).
Existe-t-il un moyen d'injecter ces commandes dans STDIN sans causer un EOF après?
Trouvé cette réponse intelligente dans une question similaire à Stackoverflow
(echo -e "cmd 1\ncmd 2" && cat) | ./Shell_executable
Cela fait l'affaire. cat
_ va pomper dans la sortie de echo
dans le flux d'entrée de shell_executable et attendez plus d'entrées jusqu'à ce que EOF.
Le moyen le plus propre de le faire est probablement de rechercher quelque chose comme bash
s --rcfile
option. Placez vos commandes personnalisées dans votre fichier personnalisé et transmettez-le à la coquille interactive pour exécuter le démarrage.
Si aucune option de ce type n'existe, vous pouvez également essayer ce qui suit:
cat custom_commands_file - | ./Shell_executable
cat
interprétera -
comme stdin.