I am working on a bash script, where it will send my commands to `geth` through a simple piping. The problem is for each piping I have to create geth process again, which preload my_script.js into `geth` all over again and this process actually consumes time since my_script.js is large. echo "net" | sudo geth --datadir --preload "my_script.js" \ "/home/MyEthereumEbloc" attach ipc:/home/MyEthereumEbloc/geth.ipc Output (I can obtain the output correctly): > { listening: true, peerCount: 2, version: "23422", getListening: function(callback), getPeerCount: function(callback), getVersion: function(callback) } I want to pass information as input and get its output result with `geth` process that works at the background and required to load my_script.js only one time. In order to accomplish this I have tried piping but I wasn't able to make it work. I am sorry if this question might be related to unix but any additional approach to solve this problem would be appreciated. mkfifo program.pipe; cat > program.pipe & sudo geth --datadir "/home/MyEthereumEbloc" attach \ ipc:/home/MyEthereumEbloc/geth.ipc console >> output.txt < sudo program.pipe Thank you for your valuable time and help.