Womit Linux consolen anwendung schreiben?

Gast #5400563
Lesenswert?

Hallo
Ms Dos mit Basic ist ewig her doch in meinem Kopf noch frisch und 
lebendig. Ich habe jetzt viele Jahre Webanwendungen Java und Python 
Notebooks geschrieben doch heute stand ich vor einem Problem. Ich wollte 
mir nur mal schnell einige variablen und Daten geordnet anzeigen lassen 
(Python). Also schnell eine Loop drum Print und gut. Da war es wieder 
Print mit Position ala Locate Print. Das könnte man jetzt brauchen.
Nur wie stellt man das an? nach Langem Googlen hab ich zumindest 
einigermaßen was gefunden.
Aber so richtig ordentlich schaut das nicht aus der Blinkende Cursor 
spring je nach Print über den Bildschirm...

Wie oder womit würde man in der heutigen zeit eine "Consolen" Anwendung 
schreiben welche wie Früher mit Menüs mit Linien aus Ascii code und 
villeicht sogar Farbe bestehen. Zielsystem in diesem Fall ein Ubuntu 
Server ohne Click & bunt.
Angehängte Dateien:
Gast #5400570
Lesenswert?

svenner schrieb:

> Wie oder womit würde man in der heutigen zeit eine "Consolen" Anwendung
> schreiben welche wie Früher mit Menüs mit Linien aus Ascii code und
> villeicht sogar Farbe bestehen. Zielsystem in diesem Fall ein Ubuntu
> Server ohne Click & bunt.

Hast Du Dir mal ncurses angesehen?
(Firma: RUB) #5400595
Lesenswert?

Du koenntest dir mal 'dialog' anschauen.
1
dialog(1) - Linux man page
2
dialog - display dialog boxes from shell scripts
https://linux.die.net/man/1/dialog


Dialog: An Introductory Tutorial
https://www.linuxjournal.com/article/2807


Wenn es um das Setzen der Position des Konsolencursors geht, kann man 
sich mit einem kleinen Hack behelfen:
1
void goto_xy(int x, int y)
2
{
3
    printf("\x1B[%i;%if", x, y);
4
}
https://stackoverflow.com/questions/8683526/gotoxy-implementation-for-linux-using-printf
http://www.termsys.demon.co.uk/vtansi.htm

In Python:
1
import sys
2

3
def goto_xy(x, y):
4
    # writes to stdout like print, but
5
    # without the newline
6
    sys.stdout.write('\x1B[{};{}f'.format(x, y))
#5404139
Lesenswert?

... wie Vorredner schon geschrieben haben ist in der Linuxkonsole 
ncurses der Klassiker (bspw. ist der Midnight Commander mit ncurses 
realisiert).

Für kleine schnelle Dinge in der Konsole und für den Grundkurs C meiner 
Auszubildenden habe ich txtools.c / .h geschrieben und die Namesgebung 
der Funktionen und Deklarationen an Turbo-C / Turbo Pascal angelehnt:

gotoxy(x,y)
settextcolor(uint8_t col)
setbkcolor(uint8_t col)

int getch(void)
int keypressed(void)
uint32_t readkey(void)

Wenn du auch in C programmierst ist das für dich vielleicht brauchbar 
!?!.

Eine sehr kleine Demo und den Sourcecode findest du im Anhang.

Gruß Ralph
Angehängte Dateien:
#5405293
Lesenswert?

Viele haben so ihre lingua franca für einfache Fälle. Bei mir ist es 
Perl. Nicht weil das die beste Sprache ist, sondern weil ich die über 
die Jahrzehnte in DOS, Unix, OS/2, Linux und Windows verwendete. 
Entweder gab es Perl schon, oder ich habs eben portiert.

Auch schon für GUI via Tk (Unix, Windows).
#5414841
Lesenswert?

Jay W. schrieb:
> Als "Ewiggestriger" nutze ich gern Free(Turbo)Pascal mit
> Free(Turbo)Vision für solche Dinge, alternativ auch Perl mit ncurses.

Irgendwie freut mich dass, dass nicht nur ich noch FreeVision verwende. 
Hauptsächlicher Nachteil hierbei ist, dass die Konsole im Textmodus 
(kein x am laufen) nicht mehr mittels ALT-Fx umschaltbar sind. Leider.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren