There are pros and cons of both CLIs and GUIs. These are many but Ill give three advantages of CLIs that I think may not be obvious. One advantage of CLIs is that they are easier to develop by far italic . Theplexity of even a full-featuredmand-line parser with sumands help messages and autpletion suggestions like Cobra (for go) is way less than theplexity of a GUI library like Qt. Another advantage of a good CLI is that it has fewer requirements. For example you can easily run a CLI inside a container. Windows in general is very GUI-centric but even there you cannot run a Windows GUI app in a Windows Docker container. And consider the band andplexity differences between say SSH and remote desktop. You can bridge the gap a little by having an HTTP-based frontend if you wish which can sometimes be nice because you can have a browser-based GUI local or remote access and also a CLI driven through c or scripts. But I think one of the main advantages of a CLI is that it aposable interface. Other answers here focus on piping stderr of one into stdin of another. But wrapping CLIs by scripts is for me often even more valuable. Just last week I was needing topare different approaches to file transfer over shoddy network connections using methods like HTTP QUIC UDT and an in-house UDP-based protocol. The first three I could exercise with a small Python script that timed the transfer ran checksums on the result and looked for a non-zero exit status. This I would run overnight and get statistics the next morning. But the in-house protocol was impervious to this approach simply because it was integrated into a GUI. Once youve written a GUI youre much more limited in how your tool is used. Many years ago doing particle physics research I wrote lots of code (in Fortran) to do various analyses. These were all CLIs. Results would go to files and get plotted with other CLIs. I show some of the results to my advisor who would in minutese up with all the various modifications I want to try. So I write a script to spin through all thesebinations each time launching the same analysis CLI sometimes in parallel and even as distributed jobs. Eventually I have scripts to run those scripts and other scripts to run those. Keep going higher. But as soon as you write a GUI youre done.