Wo wird Environment-Variable LINES gesetzt?
Hallo allerseits! Kann mir irgendjemand verraten in welchem script die Umgebungsvariablen LINES bzw. auch COLUMNS gesetzt werden? Ich kann Sie normal in der bash auslesen. Wenn ich das gleiche jedoch in einem schelscript versuche sind diese Variablen leer. Ebenso wenn ich sie mittels getenv in einem C-Programm auslesen möchte. In /etc/profile habe ich nichts gefunden. Bitte um Eure Hilfe. Möglicherweise sehe ich im Moment den Wald vor lauter Bäumen nicht! :-) mfg, Andreas. -- Andreas Scherer. LinguaSoftworks andreas.scherer@lingua.at http://www.lingua.at/
On Mon, 8 Jul 2002 01:13:26 +0200
Andreas Scherer
Hallo allerseits!
Kann mir irgendjemand verraten in welchem script die Umgebungsvariablen LINES bzw. auch COLUMNS gesetzt werden?
Ich kann Sie normal in der bash auslesen. Wenn ich das gleiche jedoch in einem schelscript versuche sind diese Variablen leer. Ebenso wenn ich sie mittels getenv in einem C-Programm auslesen möchte.
In /etc/profile habe ich nichts gefunden.
Bitte um Eure Hilfe. Möglicherweise sehe ich im Moment den Wald vor lauter Bäumen nicht! :-)
Hi, kann mich dunkel erinnern, dass ich die auch schon gesucht habe. Das gilt wohl nur fuer interaktive Shells. Es gibt aber, wie fast immer, einen anderen Weg: ---------8<---------- stty -a < $(tty)| awk -F";" '/columns/ {print $3}' columns 84 ---------8<---------- Falls Du den Midnight Commander im xterm laufen hast, wird die Ausgabe bei Veraenderung der Fenstergroesse erst nach 2 x CTRL-o aktualisiert. -- so long... bernd ------------------------------------------------------------------------
Am Montag, 8. Juli 2002 08:10 schrieb Bernd Obermayr:
Hi, kann mich dunkel erinnern, dass ich die auch schon gesucht habe. Das gilt wohl nur fuer interaktive Shells.
Es gibt aber, wie fast immer, einen anderen Weg:
---------8<---------- stty -a < $(tty)| awk -F";" '/columns/ {print $3}' columns 84 ---------8<----------
Falls Du den Midnight Commander im xterm laufen hast, wird die Ausgabe bei Veraenderung der Fenstergroesse erst nach 2 x CTRL-o aktualisiert.
Ist ja schon einmal ein Anfang. Recht herzlichen Dank! Andreas. -- Andreas Scherer. LinguaSoftworks andreas.scherer@lingua.at http://www.lingua.at/
On Mon, 08 Jul 2002 at 08:10 (+0200), Bernd Obermayr wrote:
On Mon, 8 Jul 2002 01:13:26 +0200 Andreas Scherer
wrote: Kann mir irgendjemand verraten in welchem script die Umgebungsvariablen LINES bzw. auch COLUMNS gesetzt werden?
Ich kann Sie normal in der bash auslesen. Wenn ich das gleiche jedoch in einem schelscript versuche sind diese Variablen leer. Ebenso wenn ich sie mittels getenv in einem C-Programm auslesen möchte.
Dann musst Du die Variablen vorher exporieren, also den Befehl "export LINES" ausführen. Natürlich geht das auch z. B. in der ~/.bashrc oder ~/.profile bzw. /etc/profile.local.
In /etc/profile habe ich nichts gefunden.
Bitte um Eure Hilfe. Möglicherweise sehe ich im Moment den Wald vor lauter Bäumen nicht! :-)
Hi, kann mich dunkel erinnern, dass ich die auch schon gesucht habe. Das gilt wohl nur fuer interaktive Shells.
Es gibt aber, wie fast immer, einen anderen Weg:
---------8<---------- stty -a < $(tty)| awk -F";" '/columns/ {print $3}' columns 84 ---------8<----------
Bzw. in einem C-Programm einfach mit Hilfe der (N)Curses-Bibliothek:
,----[ lines.c ]-
| #include
On Mon, 8 Jul 2002 18:52:24 +0200
Bernhard Walle
On Mon, 08 Jul 2002 at 08:10 (+0200), Bernd Obermayr wrote:
On Mon, 8 Jul 2002 01:13:26 +0200 Andreas Scherer
wrote: Kann mir irgendjemand verraten in welchem script die Umgebungsvariablen LINES bzw. auch COLUMNS gesetzt werden?
Ich kann Sie normal in der bash auslesen. Wenn ich das gleiche jedoch in einem schelscript versuche sind diese Variablen leer. Ebenso wenn ich sie mittels getenv in einem C-Programm auslesen möchte.
Dann musst Du die Variablen vorher exporieren, also den Befehl "export LINES" ausführen. Natürlich geht das auch z. B. in der ~/.bashrc oder ~/.profile bzw. /etc/profile.local.
grmpf... jetzt kommst Du damit! Haetest Du das nicht mal ein paar Jahre frueher sagen koennen? SCNR Ich hatte daran gedacht, bin aber dann von der Annahme ausgegangen, dass das dann statisch ist, also bei Aenderung der Groesse eines xterm nicht angepasst wird. Tja, haette ich mal versuchen sollen ;) Sei's drum, das script laeuft schon seit Jahren mit meiner Methode ;) -- so long... bernd ------------------------------------------------------------------------
Hallo, On Mon, 08 Jul 2002 at 21:46 (+0200), Bernd Obermayr wrote:
On Mon, 8 Jul 2002 18:52:24 +0200 Bernhard Walle wrote:
On Mon, 08 Jul 2002 at 08:10 (+0200), Bernd Obermayr wrote:
On Mon, 8 Jul 2002 01:13:26 +0200 Andreas Scherer
wrote: Kann mir irgendjemand verraten in welchem script die Umgebungsvariablen LINES bzw. auch COLUMNS gesetzt werden?
Ich kann Sie normal in der bash auslesen. Wenn ich das gleiche jedoch in einem schelscript versuche sind diese Variablen leer. Ebenso wenn ich sie mittels getenv in einem C-Programm auslesen möchte.
Dann musst Du die Variablen vorher exporieren, also den Befehl "export LINES" ausführen. Natürlich geht das auch z. B. in der ~/.bashrc oder ~/.profile bzw. /etc/profile.local.
grmpf... jetzt kommst Du damit! Haetest Du das nicht mal ein paar Jahre frueher sagen koennen?
Hast Du mich denn früher gefragt? Allerdings hätte ich ein paar Jahre früher das sicher nicht gewusst, da ich damals noch mit Windows gewerkelt habe.
Ich hatte daran gedacht, bin aber dann von der Annahme ausgegangen, dass das dann statisch ist, also bei Aenderung der Groesse eines xterm nicht angepasst wird. Tja, haette ich mal versuchen sollen ;)
*g* Habe ich eigentlich auch gedacht, ich wollte es fast dazuschreiben aber dann habe ich es doch noch mal ausprobiert und siehe da ... Gruß, Bernhard -- __________http://www.bwalle.de__________________________________________________ Es kann passieren, was will: Es gibt immer einen, der es kommen sah. -- Fernandel
Am Montag, 8. Juli 2002 18:52 schrieb Bernhard Walle: [mein Gefasel rausgeschmissen]
Dann musst Du die Variablen vorher exporieren, also den Befehl "export LINES" ausführen. Natürlich geht das auch z. B. in der ~/.bashrc oder ~/.profile bzw. /etc/profile.local.
[mein Gefasel rausgeschmissen]
Bzw. in einem C-Programm einfach mit Hilfe der (N)Curses-Bibliothek:
,----[ lines.c ]-
| #include
| | int main (void) | { | initscr(); | endwin(); | | printf("Zeilen: %d\n", LINES); | | return(0); | } `----
Mit "gcc -lncurses -ansi -pedantic -Wall -o lines lines.c" kompilieren und dann ausführen.
Siehe auch: ncurses(3), initscr(3), endwin(3)
Hi Bernhard, hi Bernd,
zunächst mal recht herzlichen Dank für Eure Tipps.
Da Ihr Euch die Mühe gemacht habt mir zu helfen möchte ich
auch das Ergebnis meiner eigenen Recherchen hier kundtun.:-)
--- schnipp ---
/* Ermitteln der Zeilen und Spalten eines Terminals */
#include
On Tue, 9 Jul 2002 02:26:35 +0200
Andreas Scherer
Am Montag, 8. Juli 2002 18:52 schrieb Bernhard Walle:
[mein Gefasel rausgeschmissen]
Dann musst Du die Variablen vorher exporieren, also den Befehl "export LINES" ausführen. Natürlich geht das auch z. B. in der ~/.bashrc oder ~/.profile bzw. /etc/profile.local.
[mein Gefasel rausgeschmissen]
Bzw. in einem C-Programm einfach mit Hilfe der (N)Curses-Bibliothek:
,----[ lines.c ]-
| #include
| | int main (void) | { | initscr(); | endwin(); | | printf("Zeilen: %d\n", LINES); | | return(0); | } `----
Mit "gcc -lncurses -ansi -pedantic -Wall -o lines lines.c" kompilieren und dann ausführen.
Siehe auch: ncurses(3), initscr(3), endwin(3)
Hi Bernhard, hi Bernd, zunächst mal recht herzlichen Dank für Eure Tipps.
Bitte, gern geschehen. ;)
Da Ihr Euch die Mühe gemacht habt mir zu helfen möchte ich auch das Ergebnis meiner eigenen Recherchen hier kundtun.:-)
--- schnipp --- /* Ermitteln der Zeilen und Spalten eines Terminals */ #include
int main(void) { struct winsize *winsz;
ioctl(0,TIOCGWINSZ,winsz); printf ("\nZeilen: %d Spalten: %d\n", winsz->ws_row, winsz->ws_col); }
Da will ich doch gleich auch noch meinen Senf dazugeben.. Lass doch Zeilen, Spalten weg oder bau einen Schalter ein, fuer mit/ohne Text. Ich weiss, es ist immer schoen, wenn man die Erklaerung mitgeliefert bekommt, was die Ausgabe eines Programmes bedeutet. Aber eine Ausgabe von 2 Zahlen laesst sich doch einfacher in einem Script weiterverarbeiten. Ausserdem ist das dann auch international ;) -- so long... bernd ------------------------------------------------------------------------
Am Dienstag, 9. Juli 2002 08:32 schrieb Bernd Obermayr:
Bitte, gern geschehen. ;)
Danke!
Da Ihr Euch die Mühe gemacht habt mir zu helfen möchte ich auch das Ergebnis meiner eigenen Recherchen hier kundtun.:-)
--- schnipp --- /* Ermitteln der Zeilen und Spalten eines Terminals */ #include
int main(void) { struct winsize *winsz;
ioctl(0,TIOCGWINSZ,winsz); printf ("\nZeilen: %d Spalten: %d\n", winsz->ws_row, winsz->ws_col); }
Da will ich doch gleich auch noch meinen Senf dazugeben.. Lass doch Zeilen, Spalten weg oder bau einen Schalter ein, fuer mit/ohne Text. Ich weiss, es ist immer schoen, wenn man die Erklaerung mitgeliefert bekommt, was die Ausgabe eines Programmes bedeutet. Aber eine Ausgabe von 2 Zahlen laesst sich doch einfacher in einem Script weiterverarbeiten. Ausserdem ist das dann auch international ;)
Argh! Das sollte doch nur vor Augen führen wie man es machen kann. :-) In meiner Anwendung werden die Werte natürlich in globale Variablen eingelesen und im gesamten Programm für die Bildschirmsteuerung verwendet. ;-) In einer interaktiven Shell kannst Du ja ohnehin $LINES & $COLUMNS verwenden. Und wie schon zu lesen war kannst Du diese ENVVAR's auch via export für alle anderen Shell's zugänglich machen. Oder? mfg, Andreas. -- Andreas Scherer, LinguaSoftworks andreas.scherer@lingua.at http://www.lingua.at/
participants (3)
-
Andreas Scherer
-
Bernd Obermayr
-
Bernhard Walle