Annoying though it may be, you can run a program in the background
that can write to your open terminal.
Just in userspace you have;
dmesg -w
tail -f /var/log/messages
There's also dbus to monitor on Linux systems and a lot of kernel hook
tricks you can use to get a message pop up if an event happens.
Because it gets annoying to have a process splurge notification stuff
to a term you are working in, that's why you have info-bars which many
terminal emulators support.
Much of modern operating systems is events-based and relies on polling for specific actions, devices connecting / disconnecting, etc. Linux device management is based on this, for example. There are numerous scripts which fire as a service is enabled or disabled (networking "ifup" and "ifdown" scripts, for example), or services are started / stopped. Systemd extends these capabilities markedly.
And of course there's a whole slew of conditional processing, beginning with init scripts, [], test, &&, ||, and specific conditional logic within shells, scripting, and programming languages.
Why is that? On the low level everything is a state of electronic cells. Files address those cells in a suitable fashion. Modern programming abstractions such as async/await are very simple, but fail miserably if you need something really complex and efficient.
I can't even understand this. How does the CLI relate to events? Are you saying that all servers secretly have an invisible GUI and handle events there?
Yet events are the primary way anything happens on a computer, whether it’s a user system or a server.