A console is a ... console (something that is used to give commands to a system). It should support the less languages required to sustain a dialog towards the system, otherwise is anymore a console, but right more a "graphical application to manage text".
And a "multi-platform console" risk to be an illusion, since it has to be used to send command to the underlying operating system (so you also need a multi-platform command interpreter, may be even multi-language - but this way there will be no more scripting portability...)
Anyway, a multi-platform application should be defined in term of a self-consistent interaction model,exposing the the user/other programs the functions required to interact with it, and them "map" that model onto the underlying interaction model of the system is implemented on.
The first part is essentially "platform independent", the second part is "platform dependent" and should exist in as many versions as the underlying platforms and variants are.
All this in theory. In practice this may result in tons of "passthrough" code, so -as the most of platform application are- that clear distinction is not always "well evident", and lot of
#ifdef PLATFORM_WINDOWS
... do the windows way
#endif
#ifdef PLATFORM_LINUX
... do the linux way
#endif
will exist, inlined with the code.