Forum: PC-Programmierung Womit Linux consolen anwendung schreiben?


von svenner (Gast)


Angehängte Dateien:

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.

von c.m. (Gast)


Lesenswert?

https://de.wikipedia.org/wiki/Ncurses
wobei das nur aufgeschnapptes halbwissen ist. schau mal ob es vielleicht 
python bindings für ncurses gibt, falls du bei einer scriptsprache 
bleiben willst.

von foobar (Gast)


Lesenswert?

ncurses ist der Klassiker

von Nop (Gast)


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?

von Kaj G. (Firma: RUB) (bloody)


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))

: Bearbeitet durch User
von Schlingel (Gast)


Lesenswert?

Für dialog(1) gibt es auch einen Python-Wrapper:
http://pythondialog.sourceforge.net/

von Ralph S. (jjflash)


Angehängte Dateien:

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

von Eric B. (beric)


Lesenswert?

svenner schrieb:
> Aber so richtig ordentlich schaut das nicht aus der Blinkende Cursor
> spring je nach Print über den Bildschirm...

Vor allen PRINT-Befehlen erst mal den Cursor ausschalten kann schon 
Abhilfe und Performance-Steigerung bringen.

von mmm (Gast)


Lesenswert?

Für Python wäre das dann wohl curses (ohne n davor)...

von bingo (Gast)


Lesenswert?

svenner schrieb:
> Print mit Position ala Locate Print

Ich mache das immer mit Python und ANSI-Escape-Sequenzen
http://ascii-table.com/ansi-escape-sequences.php

z.B.
print '\33[10;5H Zucker 1.20 Euro'
print '\33[11;5H Milch  1.80 Euro'
print '\33[12;5H ----------------'
print '\33[13;5H Summe  3.00 Euro'

Das ist fast identisch wie locate

von Jay W. (jayway)


Lesenswert?

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

Gruß Jay

von Bernd K. (prof7bit)


Lesenswert?

Jay W. schrieb:
> Free(Turbo)Pascal mit
> Free(Turbo)Vision für solche Dinge

Hat auch den Vorteil daß das Kompilat praktisch auf jedem Linux der 
letzten 20 Jahre und der nächsten 20 Jahre läuft und keinerlei libs 
installiert haben muss, wenn man keine Threads benutzt noch nichtmal die 
libc.

von (prx) A. K. (prx)


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).

: Bearbeitet durch User
von Ralph S. (jjflash)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.