Bash: Geteiltes Fenster mit unterschiedlichen Funktionen

Programmer78

Doppel-As
Beiträge
146
Hallo Leute,

ist es in Bash möglich, zwei Funktionen in zwei getrennten Teilen eines Terminalfensters ablaufen zu lassen? Da Bash die Befehle nacheinander abarbeitet, denke ich, dass es eher nicht möglich ist.

Ich hatte jedoch mal ein Beispiel gesehen, wo mit printf sekündlich die aktuelle Uhrzeit in die rechte obere Ecke geschrieben wurde, unten aber was anderes gemacht werden konnte. Deshalb bin ich mir gerade nicht so sicher.

Wie bei Weechat, oben kann man schreiben, unten eine Zeile zur Eingabe. Oder
wie bei htop, oben die Prozessor- und RAM-Details, unten die Prozessliste.

Danke für Anregungen.

Gruß P.
 

Nexus633

Eroberer
Beiträge
57
Htop und Co. Sind keine bash Programme :-). Aber ja das ist möglich :-). Du musst mit buffer und tmp Dateien arbeiten. Diese je in Funktionen bauen und in schleifen abarbeiten :-).

Ich hab mir mal Kästchen gebaut wo ich htop versucht habe in klein nachzubauen :-)

Das waren meine ersten krabbelversuche mit Bash :-)

Gruß

Gesendet von meinem HTC One mit Tapatalk
 

Programmer78

Doppel-As
Beiträge
146
ja stimmt, mit & in den Hintergrund schicken und vllcht mit printf genaue Positionen angeben. Kann man noch anders die Bereiche im Terminal-Fenster definieren?

Ok, wonach muss ich suchen, um mit buffer zu arbeiten? Bash kann ja auch nur eine Funktion zur Zeit abarbeiten oder kann man auch eine Funktion &-ten?

EDIT: Ach, hab ich ja selbst schonmal gemacht. Ja ne Funktion kann auch in den Hintergrund geschickt werden..
 

Nexus633

Eroberer
Beiträge
57
Der buffer ist nichts als eine zwischengespeicherte Variabel in diesem Fall. z.B. die Uhrzeit... Du liest sie aus speicherst die in die variabel, schubst die in den tmp und liest sie aus.... Somit hast du nen buffer x... Die variabel uberschreibst du natürlich immer wieder... Somit hast du im buffer immer die aktuelle Uhrzeit. Die lässt du dir wiederum in einer ge-&-ten Funktion mit printf oben rechts ausgeben.

Jetzt hast du einen fixen Bereich :-)

Gruß

Gesendet von meinem HTC One mit Tapatalk
 

Programmer78

Doppel-As
Beiträge
146
Um nicht das Rad neu erfinden und umständlich alles positionieren zu müssen, habe ich mich nun für tmux (244 kB Downloadgröße) entschieden. Ein Terminal-Multiplexer, bündelt mehrere Bash Sitzungen in einem Fenster, ähnlich wie Screen, nur besser, hatte ich öfters gelesen.

Fenster sind horizontal oder vertikal aufteilbar. In den jeweiligen Abschnitten kann man mit selben Befehlen nochmal aufteilen. Sehr einfach und flexibel. Sehr hilfreich für ssh-Verbindungen zu entfernten Servern, damit man sich nur einmal einwählen muss. Nach Logout können die gestarteten Sitzungen von tmux weiter laufen (falls die Verbindung mal abschmiert).

Ein Beispiel:
Code:
tmux new-session -d 'cat /etc/passwd' \; split-window -p 40 'cat /etc/shadow' \; attach

Kurze Beschreibung:
tmux allein würde nur den tmux-Server starten
new-session eröffnet eine neue Sitzung
-d sorgt dafür, dass folgender Abschnitt nicht den Cursor bekommt.
-p Abschnitt prozentuell anordnen
-s könnte der Sitzung einen Namen zuweisen
attach verbindet zum tmux-Server, zeigt die letzte Sitzung an, der Cursor ist dann im aktiven Abschnitt

mit -L könnte man noch einen Namen für den Socket definieren
mit -S bestimmt man den Pfad, indem dieser speichern soll.

Alles weitere im Manual von tmux
Code:
man tmux


Die angesprochene Uhr aus den obigen Beiträgen könnte man mit
Code:
echo $'\e7\e[2;800H\e[16D\e[7m' $(date +"%d/%m/%Y %H:%M:%S")$'\e8'
while sleep 1; do tput sc;tput cup 0 $(($(tput cols)-$(date +"%d/%m/%Y %H:%M:%S" |wc -m)));date;tput rc;done
einfügen.


:oldman Danke für Eure Anregungen!
 

Nexus633

Eroberer
Beiträge
57
Hey,
Das ist nun sogar für mich interessanten :-)

Danke dir für die ausführliche Antwort und Benachrichtigung das du es hinbekommen hast :-)

Gruß

Gesendet von meinem HTC One mit Tapatalk
 
Oben